Added KDE3 version of kvirc

git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kvirc@1095341 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
v3.5.13-sru
tpearson 14 years ago
commit a6d58bb605

File diff suppressed because it is too large Load Diff

712
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.

@ -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.

@ -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 "################################################################################"

387
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
###############################################################################

50
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).

File diff suppressed because it is too large Load Diff

910
aclocal.m4 vendored

@ -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])

@ -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 "###"
#
###############################################################################

@ -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 \
)

@ -0,0 +1,6 @@
###############################################################################
# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <stefanek@tin.it>
###############################################################################
SUBDIRS = applnk config defscript deftheme doctemplates \
helppics icons man mimelnk msgcolors pics protocols resources resources_mac

@ -0,0 +1,5 @@
tmpdir = $(applnkdir)
tmp_DATA = kvirc.desktop
EXTRA_DIST = $(tmp_DATA)

@ -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

@ -0,0 +1,5 @@
tmpdir = $(configdir)
tmp_DATA = serverdb.kvc texticons.kvc
EXTRA_DIST = $(tmp_DATA)

File diff suppressed because it is too large Load Diff

@ -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

@ -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)

@ -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
}

@ -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")"

@ -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;
}

@ -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
}
}

File diff suppressed because it is too large Load Diff

@ -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

@ -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

@ -0,0 +1,2 @@
SUBDIRS = silverirc

@ -0,0 +1,5 @@
tmpdir = $(themedir)/silverirc
tmp_DATA = themeinfo.kvc themedata.kvc pixmapIrcViewBackground.png pixmapInputBackground.png pixmapUserListViewBackground.png
EXTRA_DIST = $(tmp_DATA)

@ -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

@ -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

@ -0,0 +1 @@
EXTRA_DIST = rfc2812.template kvircintro.template 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 :)
*/

@ -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
*/

File diff suppressed because it is too large Load Diff

@ -0,0 +1,5 @@
tmpdir = $(helpdir)
tmp_DATA = helplogoleft.png helplogoright.png
EXTRA_DIST = $(tmp_DATA)

Binary file not shown.

Binary file not shown.

@ -0,0 +1,5 @@
iconapps64data_DATA = kvirc.png
iconmime64data_DATA = kvs.png kvc.png kvt.png kva.png
EXTRA_DIST = $(iconapps64data_DATA) $(iconmime64data_DATA)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,5 @@
iconapps16data_DATA = kvirc.png
iconmime16data_DATA = kvs.png kvc.png kvt.png kva.png
EXTRA_DIST = $(iconapps16data_DATA) $(iconmime16data_DATA)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -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)

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -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 O.O.O.@.L 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"
};

Binary file not shown.

Binary file not shown.

@ -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)

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -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"
};

Binary file not shown.

Binary file not shown.

@ -0,0 +1,5 @@
iconapps64data_DATA = kvirc.png
iconmime64data_DATA = kvs.png
EXTRA_DIST = $(iconapps64data_DATA) $(iconmime64data_DATA)

Binary file not shown.

Binary file not shown.

@ -0,0 +1,5 @@
###############################################################################
# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <stefanek@tin.it>
###############################################################################
SUBDIRS = 16x16 32x32 48x48 64x64 128x128 scalable

@ -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

@ -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 :)"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,3 @@
tmpdir = $(mandir)/man1
tmp_DATA=kvirc.1
EXTRA_DIST=$(tmp_DATA)

@ -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

@ -0,0 +1,5 @@
tmpdir = $(mimelnkdir)
tmp_DATA = x-kvs.desktop x-kvt.desktop x-kva.desktop x-kvc.desktop
EXTRA_DIST = $(tmp_DATA)

@ -0,0 +1,7 @@
[Desktop Entry]
Comment=KVIrc Addon Package
Encoding=UTF-8
Icon=kva
MimeType=application/x-kva
Patterns=*.kva;
Type=MimeType

@ -0,0 +1,7 @@
[Desktop Entry]
Comment=KVIrc Configuration File
Encoding=UTF-8
Icon=kvc
MimeType=text/x-kvc
Patterns=*.kvc;
Type=MimeType

@ -0,0 +1,7 @@
[Desktop Entry]
Comment=KVIrc Script File
Encoding=UTF-8
Icon=kvs
MimeType=text/x-kvs
Patterns=*.kvs;
Type=MimeType

@ -0,0 +1,7 @@
[Desktop Entry]
Comment=KVIrc Theme Package
Encoding=UTF-8
Icon=kvt
MimeType=application/x-kvt
Patterns=*.kvt;
Type=MimeType

@ -0,0 +1,5 @@
tmpdir = $(msgcolorsdir)
tmp_DATA = *.msgclr
EXTRA_DIST = $(tmp_DATA)

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -0,0 +1,8 @@
tmpdir = $(picsdir)
tmp_DATA = *.png
EXTRA_DIST = $(tmp_DATA)
SUBDIRS = coresmall

@ -0,0 +1,8 @@
tmpdir = $(picsdir)/coresmall
tmp_DATA = *.png
EXTRA_DIST = $(tmp_DATA)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,9 @@
###############################################################################
# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <stefanek@tin.it>
###############################################################################
tmpdir = $(kdeservicesdir)
tmp_DATA = irc.protocol irc6.protocol
EXTRA_DIST = $(tmp_DATA)

@ -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

@ -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

@ -0,0 +1,3 @@
EXTRA_DIST = icon1.ico kvirc.rc resource.h

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

@ -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

@ -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

@ -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>

@ -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

Binary file not shown.

@ -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.

@ -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:anonymous@cvs.kvirc.net:/cvs login
You will be asked for a password: just hit return.
# cvs -z3 -d:pserver:anonymous@cvs.kvirc.net:/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.

@ -0,0 +1,11 @@
###############################################################################
# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <stefanek@tin.it>
###############################################################################
SUBDIRS = scriptexamples
EXTRA_DIST = COPYING *.txt
tmpdir = $(licensedir)
tmp_DATA = COPYING

@ -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>

@ -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.

@ -0,0 +1,7 @@
###############################################################################
# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <stefanek@tin.it>
###############################################################################
SUBDIRS = antiidle minesweeper mp3share playing runmenu simplehttp tutorial
EXTRA_DIST = *.kvs

@ -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.

@ -0,0 +1,5 @@
###############################################################################
# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <stefanek@tin.it>
###############################################################################
EXTRA_DIST = 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)

@ -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

@ -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

@ -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();

@ -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 = "<me@me.com>"
%:rcpt = "<me@me.com>"
# This is the From field
%:sender = "\"Me\" <me@me.com>"
%:receiver = "\"Me\" <me@me.com>"
%: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
}
}
}
}

@ -0,0 +1,5 @@
###############################################################################
# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <stefanek@tin.it>
###############################################################################
EXTRA_DIST = *.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()
}

@ -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 *
}

@ -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
}

@ -0,0 +1,5 @@
###############################################################################
# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <stefanek@tin.it>
###############################################################################
EXTRA_DIST = mp3share.kvs mp3share_icon.png

@ -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 :)"

@ -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;
}

@ -0,0 +1,5 @@
###############################################################################
# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <stefanek@tin.it>
###############################################################################
EXTRA_DIST = playing.kvs playing_icon.png

@ -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 istari@kvirc.net.
#
# 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 :)

@ -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"

@ -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; };

@ -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; }

@ -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; }

@ -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){}
}
}

@ -0,0 +1,5 @@
###############################################################################
# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <stefanek@tin.it>
###############################################################################
EXTRA_DIST = 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 :)

@ -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)

@ -0,0 +1,5 @@
###############################################################################
# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <stefanek@tin.it>
###############################################################################
EXTRA_DIST = 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

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save