diff options
| author | 2018-04-10 22:14:17 +0200 | |
|---|---|---|
| committer | 2018-04-10 22:14:17 +0200 | |
| commit | 00935f13048caa58f5aa94d1a89b9dd67010fc29 (patch) | |
| tree | e2439e0739b672fe23a05fe8d84390f3c8891b9d /doc | |
| parent | PPA: fix script (diff) | |
| download | KVIrc-00935f13048caa58f5aa94d1a89b9dd67010fc29.tar.gz KVIrc-00935f13048caa58f5aa94d1a89b9dd67010fc29.tar.bz2 KVIrc-00935f13048caa58f5aa94d1a89b9dd67010fc29.zip | |
Docs folder cleanup (#2366)
* delete accelerator.keys.txt
content is at https://github.com/kvirc/KVIrc/wiki/Keyboard-shortcuts
* delete INSTALL and doc/INSTALL.txt
content is at https://github.com/kvirc/KVIrc/wiki/installation
* delete doc/firefox.hack.txt
should no longer be needed
* delete doc/themes.howto.txt
content is at https://github.com/kvirc/KVIrc/wiki/tutorials
* delete doc/INSTALL-MacOS.txt
content is at https://github.com/kvirc/KVIrc/wiki/Compiling-KVIrc-from-git-on-macOS-Sierra
* add another VS file to .gitignore
* delete doc/FAQ
content is at https://github.com/kvirc/KVIrc/wiki/FAQ
* delete old TODOs
content should be, if relevant, in issues
* delete doc/addon.howto.txt
content is at https://github.com/kvirc/KVIrc/wiki/Addons
* delete doc/scripting.faq.txt
content is at https://github.com/kvirc/KVIrc/wiki/tutorials
* delete translations.howto.txt and translations.spanish.notes.txt
content should be at https://github.com/kvirc/KVIrc/wiki/Updating-KVIrc's-translations
* delete win32_run_cmake.bat
outdated?
* adjust CMakeLists.txt for removed files
* delete Windows compilation instructions
content is at https://github.com/kvirc/KVIrc/wiki/Compiling-KVIrc-on-Windows
* delete doc/hackers.guide.txt
content is at https://github.com/kvirc/KVIrc/wiki/The-Source-Tree
* delete doc/ui-style-tips.txt
content is at https://github.com/kvirc/KVIrc/wiki/Contributing-code-to-KVIrc's-repositories
* adjust README to doc changes
* move main license file to root
* adjust mentions of copyright files
* revert status badges back from shields.io
shields.io is overloaded all the time so the badges never display
* change cmake syntax
* restore the about license text to its original glory and install the amip license only on windows
* update GPL2 from the GNU website
* change the installer to show ABOUT-LICENSE as well
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/ABOUT-LICENSE (renamed from doc/COPYING) | 126 | ||||
| -rw-r--r-- | doc/CMakeLists.txt | 25 | ||||
| -rw-r--r-- | doc/FAQ | 687 | ||||
| -rw-r--r-- | doc/INSTALL-MacOS.txt | 135 | ||||
| -rw-r--r-- | doc/INSTALL-Win32.txt | 328 | ||||
| -rw-r--r-- | doc/INSTALL-Win64.txt | 178 | ||||
| -rw-r--r-- | doc/INSTALL.txt | 632 | ||||
| -rw-r--r-- | doc/LICENSE-GPLV2 | 339 | ||||
| -rw-r--r-- | doc/LICENSE-OPENSSL | 32 | ||||
| -rw-r--r-- | doc/README | 543 | ||||
| -rw-r--r-- | doc/TODO | 14 | ||||
| -rw-r--r-- | doc/TODO-cmake | 5 | ||||
| -rw-r--r-- | doc/TODO-events | 58 | ||||
| -rw-r--r-- | doc/accelerator.keys.txt | 135 | ||||
| -rw-r--r-- | doc/addon.howto.txt | 323 | ||||
| -rw-r--r-- | doc/firefox.hack.txt | 32 | ||||
| -rw-r--r-- | doc/hackers.guide.txt | 998 | ||||
| -rw-r--r-- | doc/scripting.faq.txt | 48 | ||||
| -rw-r--r-- | doc/themes.howto.txt | 132 | ||||
| -rw-r--r-- | doc/translations.howto.txt | 157 | ||||
| -rw-r--r-- | doc/translations.spanish.notes.txt | 135 | ||||
| -rw-r--r-- | doc/ui-style.tips.txt | 67 | ||||
| -rw-r--r-- | doc/win32_run_cmake.bat | 53 |
23 files changed, 100 insertions, 5082 deletions
diff --git a/doc/COPYING b/doc/ABOUT-LICENSE index 5df47407a..ff3f5871a 100644 --- a/doc/COPYING +++ b/doc/ABOUT-LICENSE @@ -1,63 +1,63 @@ - This is the KVIrc IRC Client license. - - This program is FREE software. You can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the HOPE that it will be USEFUL, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - --------------------------------------------------------------------------------- - -The full verbatim copy of the GPLv2 can be found in the file LICENSE-GPLV2. -The KVIrc License contains all the GPL terms and conditions and adds a special -exception (see "OpenSSL Exception" below) to the distribution limitations. - -Note that the GPL is copyrighted by the Free Software Foundation, -but the instance of code that it refers to is copyrighted by -Szymon Stefanek and members of -the KVIrc Development Team as well as other independent contributors. - -The source code for all versions of KVIrc is available at -http://www.kvirc.net and https://github.com/kvirc/KVIrc - -Have fun! -Szymon Stefanek :) - - _OpenSSL Exception_ - -0. Definitions - -"KVIrc" means KVIrc software licensed under version 2 or any later -version of the GNU General Public License (collectively, "GPL"), or a -work based on such software and licensed under the GPL. - -"OpenSSL" means OpenSSL toolkit software distributed by the OpenSSL -Project and licensed under the OpenSSL Licenses, or a work based on such -software and licensed under the OpenSSL Licenses. - -"OpenSSL Licenses" means the OpenSSL License and Original SSLeay License -under which the OpenSSL Project distributes the OpenSSL toolkit software, -as those licenses appear in the file LICENSE-OPENSSL. - -1. Exception - -You have permission to copy, modify, propagate, and distribute a work -formed by combining OpenSSL with KVIrc, or a work derivative of such a -combination, even if such copying, modification, propagation, or -distribution would otherwise violate the terms of the GPL. You must -comply with the GPL in all respects for all of the code used other than -OpenSSL. - -You may include this OpenSSL Exception and its grant of permissions when -you distribute KVIrc. Inclusion of this notice with such a -distribution constitutes a grant of such permission. If you do not wish -to grant these permissions, remove this section entitled "OpenSSL -Exception" from your distribution. + This is the KVIrc IRC Client license.
+
+ This program is FREE software. You can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 2
+ of the License, or (at your option) any later version.
+
+ This program is distributed in the HOPE that it will be USEFUL,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+--------------------------------------------------------------------------------
+
+The full verbatim copy of the GPLv2 can be found in the file COPYING.
+The KVIrc License contains all the GPL terms and conditions and adds a special
+exception (see "OpenSSL Exception" below) to the distribution limitations.
+
+Note that the GPL is copyrighted by the Free Software Foundation,
+but the instance of code that it refers to is copyrighted by
+Szymon Stefanek and members of
+the KVIrc Development Team as well as other independent contributors.
+
+The source code for all versions of KVIrc is available at
+http://www.kvirc.net and https://github.com/kvirc/KVIrc
+
+Have fun!
+Szymon Stefanek :)
+
+ _OpenSSL Exception_
+
+0. Definitions
+
+"KVIrc" means KVIrc software licensed under version 2 or any later
+version of the GNU General Public License (collectively, "GPL"), or a
+work based on such software and licensed under the GPL.
+
+"OpenSSL" means OpenSSL toolkit software distributed by the OpenSSL
+Project and licensed under the OpenSSL Licenses, or a work based on such
+software and licensed under the OpenSSL Licenses.
+
+"OpenSSL Licenses" means the OpenSSL License and Original SSLeay License
+under which the OpenSSL Project distributes the OpenSSL toolkit software,
+as those licenses appear in the file LICENSE-OPENSSL.
+
+1. Exception
+
+You have permission to copy, modify, propagate, and distribute a work
+formed by combining OpenSSL with KVIrc, or a work derivative of such a
+combination, even if such copying, modification, propagation, or
+distribution would otherwise violate the terms of the GPL. You must
+comply with the GPL in all respects for all of the code used other than
+OpenSSL.
+
+You may include this OpenSSL Exception and its grant of permissions when
+you distribute KVIrc. Inclusion of this notice with such a
+distribution constitutes a grant of such permission. If you do not wish
+to grant these permissions, remove this section entitled "OpenSSL
+Exception" from your distribution.
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 0d235e32f..6d42540f6 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -1,25 +1,13 @@ # CMakeLists for doc/ set(license - COPYING - LICENSE-GPLV2 + ABOUT-LICENSE LICENSE-OPENSSL + ../COPYING ) -set(howto - README - FAQ - INSTALL.txt - INSTALL-MacOS.txt - INSTALL-Win32.txt - INSTALL-Win64.txt - addon.howto.txt - firefox.hack.txt - hackers.guide.txt - scripting.faq.txt - themes.howto.txt - translations.howto.txt - ui-style.tips.txt -) +if(WIN32) + list(APPEND license LICENSE-AMIP) +endif() # User documentation if(PERL_FOUND) @@ -78,13 +66,10 @@ endif() if(UNIX) if(APPLE) install(FILES ${license} DESTINATION ${CMAKE_INSTALL_PREFIX}/Contents/Resources/license) - install(FILES ${howto} DESTINATION ${CMAKE_INSTALL_PREFIX}/Contents/Resources/doc) else() # Assume linux install(FILES ${license} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/kvirc/${VERSION_BRANCH}/license/) - install(FILES ${howto} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/kvirc/${VERSION_BRANCH}/doc/) endif() elseif(WIN32) install(FILES ${license} DESTINATION ${CMAKE_INSTALL_PREFIX}/license/) - install(FILES ${howto} DESTINATION ${CMAKE_INSTALL_PREFIX}/doc/) endif() diff --git a/doc/FAQ b/doc/FAQ deleted file mode 100644 index fd54b7234..000000000 --- a/doc/FAQ +++ /dev/null @@ -1,687 +0,0 @@ -1. PROJECT RELATED QUESTIONS - -1.1 What is KVIrc? What does the KVIrc name stand for? -1.2 Why is KVIrc not fully integrated in KDE? - - -2. COMPILATION - -2.1 I can't compile KVIrc from Git, what's wrong? -2.2 Internal Compiler Errors? - - -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. APPEARANCE - -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 or any other browser to open links instead of explorer? - - -7. CRASHES - -7.1 What the heck is a GDB stack trace and how do I get it? -7.2 KVIrc hangs up, but doesn't crash. How do I report debug information? -7.3 KVIrc exits by itself or simply disappears without any apparent reason. -7.4 KVIrc dies when using alias(identify){ identify password; } - - -8. SCRIPTING / ADDONS - -8.1 Trying to load a script I get a "can't load the module 'script'" error. - - --------------------------------------------------------------------------------- -1. PROJECT RELATED QUESTIONS --------------------------------------------------------------------------------- - - -1.1 What is KVIrc? What does the KVIrc name stand for? - - 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 the - Qt Company and runs also on platforms where KDE can't run. - - -1.2 Why is KVIrc 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 maintain them :) - - --------------------------------------------------------------------------------- -2. COMPILATION --------------------------------------------------------------------------------- - -2.1 I can't compile KVIrc from Git, what's wrong? - - Have you checked the requirements? - *Carefully* read the INSTALL file that comes with the distribution: - it contains the information which solves 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. Alternatively - open a issue at https://github.com/kvirc/KVIrc/issues or join #kvirc - on Freenode 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.... - -------------------------------------------------------------------------------- -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 explanation). 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? - - # ping -6 ipv6.google.com - - Is the IPV6 support enabled in your KVIrc executable? - To find it out, try - - /echo $features - - in the KVIrc command line. 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 - - Otherwise, you can use friendly command line mode, where special symbols are not interpreted. Just click the green - arrow next to the input field and then click the KVS icon. - - -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\" - - Otherwise, you can use friendly command line mode, where special symbols are not interpreted. Just click the green - arrow next to the input field and then click the KVS icon. - - -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 \;) - - Otherwise, you can use friendly command line mode, where special symbols are not interpreted. Just click the green - arrow next to the input field and then click the KVS icon. - - -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\\ - - Otherwise, you can use friendly command line mode, where special symbols are not interpreted. Just click the green - arrow next to the input field and then click the KVS icon. - - -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 information - 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 command line. 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 - engines 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(OnIRCConnectionEstablished,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. APPEARANCE -------------------------------------------------------------------------------- - -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-bit 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!) - 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 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 export it 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 or any other browser to open links instead of explorer? - - Currently any browsers defined as the default browser, will be used automatically. - Use the instructions below only to set your preferred browser. - - These days KVIrc uses a "run cmd.exe /c start \ "$0" command to open the currently set default browser. - - 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). - Please note the double backslashes (a single backslash is an escaping character) - - 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 What the heck is a GDB stack trace and how do I get it? - - A GDB stack trace is a "photograph" of the state of the KVIrc internals - taken when a certain event has occurred. 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 'cmake -DDEBUG=1' option. - Without this switch the stack trace is USELESS. - - Have a working installation of GDB (the GNU Project 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 into a new bug ticket at - https://github.com/kvirc/KVIrc/issues/new - - -7.2 KVIrc hangs up, but doesn't crash. How do I report debug information? - - Use GDB to get a stack trace as in answer to question 7.1. - 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.3 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.4 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. - - -------------------------------------------------------------------------------- -8. SCRIPTING / ADDONS -------------------------------------------------------------------------------- - -8.1 Trying to load a script I get a "can't load the module 'script'" error. - Full version of the error (this is for Linux, may vary on Windows/other OS): - --- - [KVS] Runtime Error: Module command call failed: can't load the module 'script': - QLibrary::load_sys: Cannot load /usr/local/share/kvirc/4.0/modules/libkviscript.so - (/usr/local/share/kvirc/4.0/modules/libkviscript.so: no such file or directory) - --- - The script you are trying to load is calling an old KVIrc interface. Probably the - script was created for KVIrc <= 3.2, and has not been updated to work on newer - versions. The "script" module interface has been renamed to "addon" between 3.2.0.99 - and 3.2.4; the new "addon" module exports all the old "script" interfaces, so - converting the script should be quite easy. diff --git a/doc/INSTALL-MacOS.txt b/doc/INSTALL-MacOS.txt deleted file mode 100644 index 857701f3a..000000000 --- a/doc/INSTALL-MacOS.txt +++ /dev/null @@ -1,135 +0,0 @@ -Original documentation by Thomas Kalla, 17.09.2009 -Last updated by Fabio Bas, 2012.04.07 -######################### - -This document contains step-by-step instructions for compiling KVIrc4 from Git -sources on a macOS system. Due to changed prerequisites and compilation -system, this compilation howto does not apply to older versions of KVirc. - - -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: Installing KVIrc "the usual way" like on other popular Unix-like -OSes with files spread across several directories does not work and is -unsupported. The provided compilation system builds a typical "Bundle" for -macOS. A bundle is "just" a special directory structure on Mac systems which -contains the application binary, dependent libraries, plugins, modules and -other resources. - -For further details look at http://qt-project.org/doc/qt-4.8/deployment-mac.html -and the documentation on http://developer.apple.com, please. - - -######################### - Prerequisites -######################### - -1. Apple Xcode - -Any version should work as long as it supports Mac OS X 10.6 and higher. -You can get the latest version from the Mac App Store, or previous ones -registering at the developer portal at http://developer.apple.com (it's -free), download XCode and follow the install instructions in the documentation. - -2. QT-MAC - -I suggest to download and install the latest binary package from -https://www.qt.io/download/ and go through the steps to download. - -3. GNU gettext - -Get the latest sources from your favourite GNU mirror. This step is optional -but you will lose the localisation support. - -If you already installed Fink or MacPorts, you already have gettext so you -may skip this step. - -Below, sample instruction follow for version 0.17 used by me: - -Open a terminal window - - # cd /Developer - # tar -xzf <your_path_to_the_sources>/gettext-0.17.tar.gz - # cd gettext-0.17 - # ./configure - # make - # make install - -4. CMake - -Get the latest version of the automatic build system from http://www.cmake.org. -Again it's up to you if you want the easily installable binary package or read -the documentation and compile by yourself. -Please note that when using XCode >= 4.3 you need at least cmake 2.8.8. - -5. Make sure that gettext and CMake are accessible from your $PATH! - - -######################### - KVIrc installation -######################### - - -1) Get the KVIrc sources: - - # git clone https://github.com/kvirc/KVIrc.git - -2) Build! :-) - -Two IMPORTANT hints before you start: - -Notes for x86_64 arch: ---- -Currently I found no way to successfully add scripting support for Perl and -Python on Intel 64-bit Macs. When compiled in, they both mess up with the -target architecture and leads to linking failures. Perl can be safely use -to generate the documentation, anyway. - -I found KVIrc crashing when compiled in debug mode with QtDbus enabled and -no dbus daemon running, so I advice you to disable it. - -Additionally, if you installed any kde-based software, you could end up with -a kde-enabled KVIrc installation: you probably want to avoid that. - -To sum these suggestion up, this is my current cmake invocation: -cmake .. -DWANT_KDE4=0 -DWANT_DEBUG=1 -DWANT_QTDBUS=0 -DWANT_PYTHON=0 -DWANT_PERL=0 ---- - -Notes for ppc/386 arch: ---- -* If you want to use Perl (Documentation and Modules) you have to build a -universal binary. This is due to Cmake overriding your architecture values -by the ones found in 'ldflags' returned by calling "perl -V". -* If you want python support than you cannot build for an older macOS -version, i.e. the value of $MACOSX_DEPLOYMENT_TARGET has to match the value -used by Apple when they built the python package. ---- - -I suggest an "out-of-source" build: - - # mkdir build - # cd build - # cmake .. - # make - # make install - -Instead of cmake you may also consider to call ccmake which provides a nice gui -for the options. - -The result is a KVIrc.app bundle within the build directory. - -If you plan to redistribute your package, you can use "macdeployqt" on the -generated KVIrc.app to inject the necessary Qt libraries in it: this will make -the bundle size grow up a lot, but will remove the requirement for other people -to install Qt in order to run your bundle. - -3) Enjoy :-) - -Open Finder, move your bundle into a better location (e.g. /Applications), -and double click to start. diff --git a/doc/INSTALL-Win32.txt b/doc/INSTALL-Win32.txt deleted file mode 100644 index 415800f64..000000000 --- a/doc/INSTALL-Win32.txt +++ /dev/null @@ -1,328 +0,0 @@ -------------------------------------------------------------------------------- -KVIrc4 win32 compiling howto (WIP) by CtrlAltCa -------------------------------------------------------------------------------- - -This paper describes how to successfully compile a working copy of KVIrc 4.x -under Microsoft Windows operating systems. - - -------------------------------------------------------------------------------- -Prerequisites -------------------------------------------------------------------------------- - -- A Microsoft Windows operating system - - [Needed to run KVIrc into, mandatory] - - - XP or 2003 server, preferably with at least service pack 2 - - Vista, preferably not :p - - Seven or 2008 server - - Notice: DOS-based Windows operating systems (95,98,se,me) are not officially - supported by KVIrc. Anyway, if you're still using such an old OS then you - have worst problems than this... - - Notice: Windows 2000 may work, but is not officially supported anymore. - Differences in its network stack and the difficulty to retrieve packages - of KVIrc dependencies still working on win2000 make compiling KVIrc an - overkill job. - -- CMake from Kitware - - [Configuration tool; needed to compile KVIrc, mandatory] - - Download the tool from http://www.cmake.org. The package you want is called - "Windows (Win32 Installer) cmake-<version>-win32-x86.exe" (version may vary). - - You need at least version 2.6.4 to compile KVirc. Avoid version 2.8.0; use - version 2.8.2 instead. - - Recent versions of the cmake installer will ask if you want to add cmake to - the system PATH: you don't need it. - - -- Qt 4 from Nokia - - [Graphic library, mandatory] - - You need at least Qt 4.6.0 upwards fo get a fully working KVIrc. - We suggest you to get the "Qt SDK for Open Source C++ development on - Windows" you can get here: http://qt.nokia.com/downloads/sdk-windows-cpp - - The Qt SDK includes the Qt libraries and a working mingw environment, so you - won't need to install one manually. - -- MinGW from the MinGW team - - [Compiler; needed to compile KVIrc, mandatory] - - If you installed the Qt SDK >= 4.6.0, you already have MinGW installed and - you can jump to the next requisite. Otherwise you need to install MinGW - manually: refer to http://www.mingw.org/wiki/InstallationHOWTOforMinGW - Please note that you need to install gcc4 (gcc3 could work but is not supported). - -- Perl for Win32 - - [Programming language; needed for documentation creation; optionally can - be used for scripting support; may also be used to compile OpenSSL by - yourself (see the related paragraph below)] - - Any win32 version will work; We advice you to use the distribution provided - by ActiveState. It's called ActivePerl and you can find at - http://www.activestate.com/activeperl/downloads/ - You want the "Free Community Edition" package. - - Perl is needed to extract documentation from the source files and generate - help files for KVIrc. - - Some perl releases misses dmake; if you get a strange error at compilation - time, run the following command from cmd prompt (start->run->cmd): - - # ppm install dmake - -- Zlib compiled for Win32 - - [Compression library; needed for many stuffs, mandatory] - - MinGW offers a zlib package: You'll need to download from - http://sourceforge.net/projects/mingw/ the packages: - - libz-1.2.3-1-mingw32-dll-1.tar.gz - libz-1.2.3-1-mingw32-dev-1.tar.gz - - Search them on the MinGW project files download page. - - Install the lib somewhere (like C:\zlib) and remember its path. - -- OpenSSL compiled for Win32 - - [Enc/Decrypt library; needed to secure your irc sessions, optional] - - To compile KVIrc for your own use you can download a precompiled - package from http://www.slproweb.com/products/Win32OpenSSL.html - The package you want is called "Win32 OpenSSL v0.9.8l" (version number may - vary; there should be a notice like "Recommended for software developers" - in the package description). Any recent version should work; general rule: - more recent usually means more secure. - - Newer OpenSSL versions from www.slproweb.com need a specific version of - Microsoft Visual Studio 2008 runtimes to work (this sucks): so if you plan - to create a redistributable KVIrc package, our advice is to compile - OpenSSL by yourself using MinGW/MSYS and then use your libs. - - To compile OpenSSL by yourself: - - download the latest source from http://www.openssl.org - - move it somewhere inside the msys root directory (C:\MinGW\msys\1.0\) - - open the MinGW shell and locate the package - - unpack the package (you need to do it from the MinGW shell since it - contains symlinks) - - enter in the created directory - - run "./config shared" - - run "make" and then "make install" - - grab the entire installation directory (e.g. C:\MinGW\msys\1.0\local\ssl) - and copy it in a more accessible path (like C:\OpenSSL) - - Whatever way you choose, install OpenSSL somewhere (like C:\OpenSSL) - and remember the path. - -- Python for Win32 - - [Programming language; optional scripting support] - - Any win32 version will work; We advice you to use the version you can find - at http://www.activestate.com/activepython/downloads/ . - You want the "Free Community Edition" package. - - Please note that we are currently supporting the 2.x version of python - (currently 2.6). Python3000 (aka python3k) is not backwards compatible - and supported by now. - -- GNU GetText for Win32 - - [Localization tools; needed to translate KVIrc interface into your - own language; required if you're building a redistributable package, - otherwise optional] - - We advice you to use the version you can find at - http://gnuwin32.sourceforge.net/packages/gettext.htm, - follow the "Setup program" link. - Install the package somewhere (like C:\gettext) and remember the path. - -- GNU Sed for Win32 - - [Tool; needed to tidy KVIrc translation files, optional] - - We advice you to use the version you can find at - http://gnuwin32.sourceforge.net/packages/sed.htm, - follow the "Setup program" link. - - Install the package somewhere (like C:\sed) and remember the path. - -- Git for windows - - [Git; needed for cmake to automatically set the correct - revision number in KVIrc build; can be overridden (see below). - Also required to obtain the latest source code revisions of KVIrc] - - Git can be obtained via https://git-scm.com/download/win. Git is also - included within MinGW which may be obtained here http://www.mingw.org/ - - If you don't want to install the Git cli or Gui, you can just force - the correct Git revision by passing the -DMANUAL_REVISION=xxxx - parameter to cmake. - -- Nullsoft scriptable install system (NSIS) - - [Installer packages creator; needed if you want to create an installer - package for KVIrc] - - Get it at http://nsis.sourceforge.net/Download ; the package you want - is called "nsis-2.46-setup.exe" (version numbers may vary). - - - -------------------------------------------------------------------------------- -Further recommended download if you plan to develop KVIrc: -------------------------------------------------------------------------------- - -- GNU Debugger (gdb) for Win32: - - [Dev Tool: Debugger; optional] - - Download it from the MinGW website. - -- StraceNT (aka strace for Win32) - - [Dev Tool: tracer; optional] - - Download it from http://www.intellectualheaven.com/ . - - -------------------------------------------------------------------------------- -Compilation -------------------------------------------------------------------------------- - -Download KVIrc sources from KVIrc's website, a mirror or using Git (see -instructions on KVIrc website about how to do that). From now on I'll assume -that you have saved the sources in C:\KVIrc - -Go to the C:\KVIrc directory an create a "build" folder in it. -This may be done either via Windows explorer or via a command prompt -in the following way: - - # cd C:\KVIrc - - # mkdir build - # cd build - -Now copy the win32_run_cmake.bat script from the C:\KVIrc\doc directory -to the build directory - - # copy ..\doc\win32_run_cmake.bat .\ - -Now edit the file you just copied by filling in the paths (you did -write them down, don't you? :). - -Run the win32_run_cmake.bat script. - - # win32_run_cmake.bat - -This should invoke the cmake executable and configure KVIrc for you. - -If it complains about missing libraries then you haven't properly -edited the paths in the win32_run_cmake.bat file. Check again. -Note that the "bin" subdirectories generally aren't included in the path. - -You may also try to use the CMake gui for the compilation. Just be aware -of the %PATH% variable defined in the win32_run_cmake.bat script. If you -screw up %PATH% CMake may refuse to start or the mingw make may crash. -Note also that you must tell the graphical configuration that you want -the "MinGW Makefiles" as output. - -Once cmake did its job (it will tell you that it's ready to compile KVIrc) -you can just run the mingw make program. - - # mingw32-make.exe - -The compilation may spit out some warnings: just ignore them (unless -you're a cool developer.. in that case: fix them!). -If it runs without errors then you can also run make install: - - # mingw32-make.exe install - -This should create a working KVIrc executable for you in the build\release -directory. With some experience you may also get mingw to create a debug -build. - -Simply running KVIrc from that directory should work :) . If instead it's -complaining of some missing dlls, you may need to copy those dlls into - KVIrc binary directory (in our example: C:\KVirc\build\release) or to get -those dlls recognized and loaded automatically from your OS. - -If you want to create an installer package, you need to: - -1) fill the binary directory (in our example: C:\KVIrc\build\release) with - all the files that cmake doesn't create: - - needed dlls: - - Qt: QtCore4, QtGui4 (mandatory); QtNetwork4, QtSvg4, QtWebkit4, - QtXml, QtXmlPatterns (used in objects module); - - Zlib: libz.dll (aka libz-1.dll, zlib.dll, ...); - - Openssl: libeay32.dll, libssl32.dll (names may vary); - - MinGW: mingwm10.dll, libgcc_s_dw2-1.dll - - Perl: perl512.dll (version number may vary); - - Python: python26.dll (version number may vary); - - Amip: ac.dll / ac.ini (adds plug'n'play support for amip) - Choose the right dlls depending on your build options: for a debug - build you'll need debug version of Qt libraries (e.g. QtCored4) - - - qt plugins: - These have to be placed in a subdirectory named qt-plugins - (in our example: C:\KVirc\build\release\qt-plugins). - Currently KVIrc can use 4 types of plugins: codecs, imageformats, - phonon_backend, sqldrivers. Create a subdirectory and name it with the - type name of the plugins you'll place inside it; - (e.g. C:\KVirc\build\release\qt-plugins\imageformats\qjpeg4.dll) - You can find them inside the "plugins" directory in the Qt Sdk. - Choose the right dlls depending on your build options: for a debug - build you'll need debug version of Qt plugins (e.g. qjpegd4.dll) - - - locale translations: - If you did not install or disabled gettext, your release folder misses - the "locale" folder typically containing translation files. This means - KVIrc won't be able to translate its user interface. - As a workaround, you can get translation files somewhere, create the - "locale" folder and manually place translations inside it. - - - help file: - If you did not install or disabled perl, your release folder misses - the "help" folder typically containing user help. This means - KVIrc internal help will contain no help pages. - As a workaround, you can get help files somewhere, create the - "help/en" folder and manually place help files inside it. - -2) run the KVIrc.nsi script from the build directory (C:\kvirc\build in our example) . - Just compile it using nsis and an installer package will be generated. - - -------------------------------------------------------------------------------- -Common errors, pitfalls, -------------------------------------------------------------------------------- - -- On modules compilation we get a warning like this one: - ---------- - C:\kvirctrunk\src\modules\clock\libkviclock.cpp:242: warning: `KVIrc_module_info' initialized and declared `extern' - ---------- - This is a simple warning, it doesn't block compilation or affects any functionality. - -- During the compilation, we get a warning like this one: - ---------- - C:/kvirctrunk/src/kvilib/system/kvi_time.h:0: Warning: No relevant classes found. No output generated. - ---------- - In the compilation we call qt's moc to parse headers files and expand qt macros; - that warning simply means that moc found nothing to expand in that header file. We can fix this - removing headers that doesn't need to be moc-ed from the lists in CMakeLists.txt. - -- * Windows Vista and 7 Users * If you have UAC enabled (default setting) and KVIrc is installed in the Program Files folder - and you have opted to use the portable setting, then KVIrc's data files will be found in the VirtualStore folder, - typically: C:\Users\[UserName]\AppData\Local\VirtualStore\Program Files\KVIrc\ If you plan on using the portable setting, - it is recommended that you install KVIrc in a non UAC protected folder. diff --git a/doc/INSTALL-Win64.txt b/doc/INSTALL-Win64.txt deleted file mode 100644 index c6b5b2d04..000000000 --- a/doc/INSTALL-Win64.txt +++ /dev/null @@ -1,178 +0,0 @@ -------------------------------------------------------------------------------- -KVIrc4 win64 compiling howto by Cizzle - based on wodim's guide at https://thacid.wordpress.com/2010/10/18/compiling-kvirc-64-bits-from-svn-using-visual-studio-2008/ - and DarthGandalf's appveyor buildinstructions -------------------------------------------------------------------------------- - -This paper describes how to successfully compile a working copy of KVIrc 4.3.x -under Microsoft Windows operating systems. For own compilations we assume a -root-directory C:\kvirccomp\ being used. - -------------------------------------------------------------------------------- -Prerequisites -------------------------------------------------------------------------------- - -- A 64-bit Microsoft Windows operating system. - Should work at least on 7 - -- Microsoft Visual Studio 2013 (Community Edition). - Get it from https://www.visualstudio.com/nl-nl/products/visual-studio-community-vs - Install in default location with default options, though you can slim it down a lot if wanted. - -- CMake. - Get it from http://www.cmake.org/download/ - Install in default location with default options and choose "Add CMake to command path for all users". - -- GIT client. - Get one from https://git-for-windows.github.io/ - Git bash should be enough. - -- Qt. - Get it from https://www.qt.io/download-open-source/ - Version 5 should work. - Get the online installer and be sure to mark MSVS 2013 64bit version. - Install in default location with default options. - -- Perl. - Get it from http://www.activestate.com/activeperl/downloads - Get the 64-bit version, use 5.20.x (newer versions don't have dmake yet in the repo). - Install in default location with default options. - - If you want scripting support, you will also have to do this: - Go to C:\Perl64\lib\CORE, make the file config.h not read-only and open it for editing. - Find the line that starts with "#define PERL_STATIC_INLINE" and put "/*" in front of it (so it's commented). - And of course save the file. - - Some perl releases miss dmake at install time; if you get a strange error at compilation - time, run the following command from cmdline: ppm install dmake - -- zlib. - Get it from http://zlib.net/ - Get the source as we need to compile it ourselves (until a 64bit dll is provided). - Compiling (replace versions with what you have): - Unpack in C:\kvirccomp\; then open a VS x64 Native CMD Prompt and run: - cd C:\kvirccomp\zlib-1.2.8 - "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64 - nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I." OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" - -- OpenSSL. - Get it from http://www.openssl.org/source/ to compile yourself - or get the non-Light Win64 package from http://slproweb.com/products/Win32OpenSSL.html - Compiling (replace versions with what you have): - Unpack in C:\kvirccomp\; then open a VS x64 Native CMD Prompt and run: - perl Configure VC-WIN64A - ms\do_win64a - nmake -f ms\ntdll.mak - cd out32dll - ..\ms\test - All of the tests should run flawlessly. - - Then run the following as a batch-script in the ${OPENSSL_INCLUDE_DIR}/openssl/: - @echo off - setlocal enabledelayedexpansion - for %%f in (*.h) do ( - set /P linkn= < %%f - set linkn=!linkn:/=\! - ren %%f %%f.ori - copy !linkn! %%f - ) - -- Python. - Optional for scripting purposes - Get it from http://www.activestate.com/activepython/downloads/ - Get the 64-bit 2.x version as 3.x is not backwards compatible and supported by now. - Install in default location with default options. - -- Enchant. - Optional for spellchecking support - Get it from https://ci.appveyor.com/api/buildjobs/kf2efxpaes6uugwg/artifacts/enchant.7z - Unpack in C:\kvirccomp and edit enchant-inst\include\enchant\enchant.h adding under line "#include <sys/types.h>" (l35): - #include <BaseTsd.h> - typedef SSIZE_T ssize_t; - and edit enchant-inst\include\glib-2.0\glibconfig.h adding under lines "#define G_CAN_INLINE 1; #endif" (l120): - #undef G_CAN_INLINE - You can get dictionaries from http://extensions.libreoffice.org/extension-center/ - -- Phonon4Qt5. - Optional audio backend - Get it from https://projects.kde.org/projects/kdesupport/phonon/phonon/repository - We need to compile this ourselves, but we first need the extra-cmake-modules: - Get this from https://projects.kde.org/projects/kdesupport/extra-cmake-modules/repository - Unpack ECM in C:\kvirccomp\, then open a VS x64 Native CMD Prompt and run: - md build - cd build - cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=release -DCMAKE_INSTALL_PREFIX=C:\Qt\5.4\msvc2013_64 - nmake install - Then unpack phonon in C:\kvirccomp\, and in a VS x64 Native CMD Prompt run: - md build - cd build - cmake .. -G "NMake Makefiles" -DPHONON_BUILD_PHONON4QT5=ON -DCMAKE_INSTALL_PREFIX=C:\Qt\5.4\msvc2013_64 -DCMAKE_PREFIX_PATH=C:\Qt\5.4\msvc2013_64 -DPHONON_INSTALL_QT_EXTENSIONS_INTO_SYSTEM_QT=ON -Wno-dev - nmake - nmake install - -- GNU GetText for Win32. - Required if you're building a redistributable package, - needed to translate KVIrc interface into your own language. - Get it from http://gnuwin32.sourceforge.net/packages/gettext.htm - Install in default location with default options. - -- GNU Sed for Win32. - Optional for translation file cleanup - Get it from http://gnuwin32.sourceforge.net/packages/sed.htm - Install in default location with default options. - -------------------------------------------------------------------------------- -Compilation -------------------------------------------------------------------------------- - -- Get the KVIrc source code - Using GIT bash: - cd /c/kvirccomp/ - git clone https://github.com/kvirc/kvirc.git - -- Compile KVIrc - Open a Visual Studio x64 Native command prompt. Before starting, we have to set some environment variables. - Replace with your respective versions and install paths. The Perl and Python paths might already be set. - set PATH=%PATH%;C:\kvirccomp\zlib-1.2.8;C:\Qt\5.4\msvc2013_64\bin;C:\Perl64\bin;C:\Perl64\site\bin;C:\Python27;C:\Program Files (x86)\GnuWin32\bin - set CMAKE_INCLUDE_PATH=%CMAKE_INCLUDE_PATH%;C:\kvirccomp\openssl-1.0.2d\include;C:\kvirccomp\zlib-1.2.8 - set CMAKE_LIBRARY_PATH=%CMAKE_LIBRARY_PATH%;C:\kvirccomp\openssl-1.0.2d\out32dll;C:\kvirccomp\zlib-1.2.8;C:\Qt\5.4\msvc2013_64\lib - - If you compiled OpenSSL yourself and want to use this during compilation, - and have the package from SLProWeb installed in it's default location, - you need to rename the SLProWeb installationpath first. - CMake will look at those default paths first. - - Next, go to the KVIrc source dir and create a build directory and its Makefiles using cmake and compile. - We use the "release" build-type as "debug" seems to have incompatibilities between /O2 and /RTC usage - If you want spellchecking support, add these flags to the cmake command: - "-DEnchant_FOUND=1 -DEnchant_INCLUDE_DIRS=c:\kvirccomp\enchant-inst\include\enchant;c:\kvirccomp\enchant-inst\include\glib-2.0 -DEnchant_LDFLAGS=c:\kvirccomp\enchant-inst\lib\libenchant.dll.a" - If you don't want Perl scripting support, add this flag to the cmake command: - "-DWANT_PERL=0" - If you don't want the Phonon audio backend and want to ignore the warning, add this flag to the cmake command: - "-DWANT_PHONON=0" - cd C:\kvirccomp\KVIrc - md build - cd build - cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=release -DWANT_KDE=0 - nmake - nmake install - - Your binaries are now located at C:\kvirccomp\kvirc\build\release. - But you can’t start kvirc.exe as there're some libraries missing. - You can either copy these to the system dir, add their locations to %PATH% or copy them to the KVIrc-release dir. - The latter is preferred for portability reasons. - robocopy C:\Qt\5.4\msvc2013_64\bin C:\kvirccomp\kvirc\build\release\ Qt5Network.dll Qt5Core.dll Qt5Widgets.dll Qt5Gui.dll Qt5WebKitWidgets.dll Qt5WebKit.dll Qt5Sensors.dll Qt5Positioning.dll Qt5Quick.dll Qt5Qml.dll Qt5Multimedia.dll Qt5WebChannel.dll Qt5Sql.dll Qt5MultimediaWidgets.dll Qt5OpenGL.dll Qt5PrintSupport.dll Qt5WinExtras.dll icuin53.dll icuuc53.dll icudt53.dll - robocopy C:\kvirccomp\openssl-1.0.2d\out32dll C:\kvirccomp\kvirc\build\release\ libeay32.dll ssleay32.dll - copy C:\kvirccomp\zlib-1.2.8\zlib1.dll C:\kvirccomp\kvirc\build\release\ - copy C:\Perl64\bin\perl520.dll C:\kvirccomp\kvirc\build\release\ - Optionally copy: - copy C:\Windows\System32\python27.dll C:\kvirccomp\kvirc\build\release\ - -- Add extra plugins - Qt provides extra plugins which can be used, these have to be placed in a subdirectory named "qt-plugins". - Currently KVIrc can use these types of plugins: - qt4: codecs, iconengines, imageformats, phonon_backend, sqldrivers - qt5: audio, iconengines, imageformats, mediaservice, platforms, sqldrivers - Create a subdirectory and name it with the type name of the plugins you'll place inside it; - You can find them inside C:\Qt\5.4\msvc2013_64\plugins\. - Choose the dlls without a "d" at the end of the filename: qjpeg.dll and not qjpegd.dll. diff --git a/doc/INSTALL.txt b/doc/INSTALL.txt deleted file mode 100644 index aa9d7d03c..000000000 --- a/doc/INSTALL.txt +++ /dev/null @@ -1,632 +0,0 @@ -------------------------------------------------------------------------------- - Table of contents -------------------------------------------------------------------------------- - - 1. Introduction - 2. Hacker Installation - Advanced or power users - 3. Dependencies and requirements - 4. Configuring the environment - 5. Getting and updating the source code - 6. Configuring KVIrc - 7. Interactive CMake KVIrc configuration - 8. Compiling KVIrc - 9. Compiling on macOS - 10. Compiling on Windows - 11. Creating a KVIrc package - -------------------------------------------------------------------------------- - 1. Introduction -------------------------------------------------------------------------------- - - This document contains the procedures to Install required development libraries - clone KVIrc's source code, configure your environment, configure and - compile and install KVIrc. - - If you have found this document in a binary distribution then - KVIrc has been probably already installed by your distros package - manager and maybe something is not working as expected. In this case - this document and the accompanying F.A.Q. can help you determining - the issue. - - If you have found this document in a source distribution or you - have downloaded it by using Git or downloaded tarball then well... - this is a standard INSTALL file :) - - Note: It isn't practical to cover all Linux distributions in this doc. - - This doc provides fully working instructions for Ubuntu or variants. - Compiling KVIrc in your preferred Linux distributions is possible, - provided the minimum required dependencies and their versions are met. - - From here on in this doc refers to "Ubuntu or variants", where variants - are distributions classed as Ubuntu derivatives. - - Note on lines prefixed with "$" or "0." or "1.": - - "$" Signifies the command prompt on your shell. - "0." Prefixes are default command variation. - "1." Prefixes are a possible alternative variation of the command. - - Note: If anyone could find the time to test KVIrc with ICC please let us know! - -------------------------------------------------------------------------------- - 2. Hacker Installation - Advanced or power users: -------------------------------------------------------------------------------- - - First of all, if you often compile applications from source on Linux - and you know how to solve dependency problems then well, KVIrc is not - very different. It uses a build system based on CMake and follows its - standard procedures. - - If you feel brave try: - - $ cd <kvirc_source_directory> // (usually KVIrc) - $ mkdir build - $ cd build - $ ccmake .. - $ make - $ sudo make install - - If something goes wrong with the above procedure then you should read - the step-by-step instructions below. - -------------------------------------------------------------------------------- - 3. Dependencies and requirements: -------------------------------------------------------------------------------- - - KVIrc compilation process depends on a set of tools and development libraries. - Some of them are strictly required (the process will fail without them) - and some are optional. The ones marked as "preferred" are optional but - without them KVIrc may lack some fundamental features. - - Where OpenSSL is concerned, you should check it is legal to use cryptographic - libraries in your Country. - - In order to compile KVIrc you will need: - - - C++ compiler ............ (Required) - - CMake ................... (Required) >= 3.1.0 - - CMake GUI ............... (Optional) - - Doxygen ................. (Optional) - - pkg-config .............. (Required) - - git-core ................ (Preferred) - - Pthreads ................ (Required) - - ZLib .................... (Required) >= 1.2.8 - - X Rendering Extension ... (Required) - - X11 client-side library . (Required) - - Qt GUI Toolkit .......... (Required) >= 4.8 - - KDE ..................... (Optional) - - Enchant ................. (Optional) - - Phonon framework ........ (Preferred) - - Qt Multimedia ........... (Optional) - - OpenSSL ................. (Preferred) - - GSM speech compressor ... (Optional) - - GNU gettext ............. (Optional) - - Python .................. (Optional) - - Perl .................... (Preferred) >= 5.004 (5.10 recommended) - - Note: For further information on these libraries read 4. Configuring the environment - - For CMake >= 3.1.0 run: - - Note: PPA for CMake for Ubuntu and variants <= 14.04 LTS: - - $ sudo add-apt-repository ppa:kvirc/kvirc -y - $ sudo apt-get update - - For Ubuntu or variant distributions the complete list of dependencies - and installation command is: - - $ sudo apt-get install build-essential cmake cmake-curses-gui doxygen git-core \ - libenchant-dev libgettextpo-dev libgsm1-dev libperl-dev libpthread-stubs0-dev \ - libssl-dev libx11-dev libxrender-dev pkg-config python-dev zlib1g-dev - - Note: KVIrc is complied by default against Qt5.x those libraries are: - - $ sudo apt-get install libqt5webkit5-dev libqt5svg5-dev \ - libqt5x11extras5-dev qtbase5-dev - - Note: An audio support backend is required for audio the choices are as follows: - - Compiling KVIrc with qtmultimedia5 audio support: - - $ sudo apt-get install qtmultimedia5-dev - - Compiling KVIrc with phonon audio support: - - $ sudo apt-get install libphonon4qt5-dev libphonon4qt5experimental-dev - - Note: When using Phonon, a working phonon-backend should be installed, - else you may not get any audio coming out your speakers at runtime. - -------------------------------------------------------------------------------- - 4. Configuring the environment: -------------------------------------------------------------------------------- - - If your distribution is sane, installing the development packages should set up - your environment variables correctly. You will know that something is wrong when - you run CMake, the configuration output will complain if paths are not found. - - If the CMake configuration terminates successfully you can skip directly to step 5. - - However when this is not the case you may need to export the path variables manually. - e.g. $QTDIR. - - Note: Where x is the KVIrc's currently supported Qt version. - Current only Qt supported version is 5 - - For x86 e.g. - - $ export QTDIR=/usr/lib/qtx - - For x86_64 e.g. - - $ export QTDIR=/usr/lib/x86_64-linux-gnu/qtx - - Note: If you have multiple distinct versions of the same Qtx.x installed - and want to use a specific version, exporting QTDIR won't suffice, since the - CMake module searching for Qtx.x uses qmake itself to determine the Qtx library dir. - - You can set your $PATH variable to have CMake using your specified Qtx.x version: - - $ PATH=/opt/qtx.x/bin/:$PATH cmake .. - - Note: See step [5. Configuring KVIrc] for supported CMake configuration flags. - The trailing dots are required when you build out-of-source - or CMake will likely fail. - - ## KDE (Optional) - - If you want to compile the KDE integration support, you obviously need KDE. - The kdelibs package should suffice. - - - ## Pthread implementation (Required) - - This is usually included in your distribution and is probably already - installed. In Ubuntu or variants the library is libpthread-stubs0-dev. - The library is called libpthread.so. You can search for it using the "find" - or, at your option, "locate" command. - - 0. $ find / -name libpthread* - - 1. $ locate -i "libpthread*" - - ## GNU gettext (Optional) - - If you use KVIrc in a language other than English, then you need - the GNU gettext package. In particular KVIrc uses msgfmt. - - This is usually included in your distribution and is probably already installed. - In Ubuntu or variants this library is libgettextpo-dev. - If your distro is not Ubuntu or variant 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. See the CMake configuration output. - - - ## Perl (Optional) - - If you want to generate the on-line documentation you'll also need Perl. - - Note: The way external software can embed Perl has changed between Perl version - 5.8 and 5.10. KVIrc should play nice with Perl as of version 5.004 and - higher, but 5.10 is strongly recommended, since future updates can break - backwards compatibility. - - 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 - - - ## OpenSSL (Preferred) - - If you want the secure socket layer (SSL) support to be compiled, you need - the OpenSSL development library, in Ubuntu or variants its libssl-dev - - - ## GSM (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' or 'locate' command. - - 0. $ find / -name libgsm* - - 1. $ locate -i "libgsm*" - - This library is included in most distributions. - Some distros ship only the static version of the library "libgsm.a". - If the previous find or locate command returned something similar - to "/usr/lib/libgsm.a", you might create the shared library manually - by running: - - $ cd /usr/lib - $ ld --whole-archive -shared -o libgsm.so.1 libgsm.a - $ ln -s libgsm.so.1 libgsm.so - $ ldconfig - - Notes: - 1. This won't work if the library was compiled without -fPIE. - 2. Files in /usr/lib should really be managed by package manager of the distro. - Whenever package containing libgsm.a upgrades, the manually created libgsm.so stays old. - 3. The distribution can provide a better way to install libgsm.so. - e.g. in Gentoo many packages have static-libs USE-flag which tells the package manager - to install not only .so files, but also .a (which is kinda the reverse, but the point still stands) - - ## Phonon framework - (Preferred) - - If you want the /snd plugin to play various audio formats, - you either need the phonon framework, a running ESounD daemon, - or a reasonably recent audiofile library. - Without these KVIrc will be only able to play *.au files. - - - You will need the dynamic linker interface library libdl.so. - - This is usually installed on your system, so don't care until configure - complains about it. Some system have the interface builtin in libc. The - configure script can detect this. - -------------------------------------------------------------------------------- - 5. Getting and updating the source code: -------------------------------------------------------------------------------- - - The KVIrc development code is located at https://github.com/kvirc/KVIrc - - There are several ways to get KVIrc's source code, if you compile often, - the best way is to clone the repository as this allows for the most flexibility. - - $ mkdir /home/setup && cd /home/setup - $ git clone https://github.com/kvirc/KVIrc.git - - Keeping the git clone up-to-date is simple. - - $ git pull --rebase origin master - - Cleaning the git directory of any files or directories generated my CMake or Make. - This is recommended previous to configuring or compiling any updated git clones, - it will minimize the chance of errors during the reconfiguration / compilation, - If you experience any compile issues make sure this command is executed. - - $ git clean -xfd - - Alternatively if you prefer. you can download a tarball of the most recent - sources. - - $ mkdir /home/setup && cd /home/setup - $ wget https://github.com/kvirc/KVIrc/archive/master.tar.gz -O kvirc.git.tar.gz - $ tar -zxvf kvirc.git.tar.gz - -------------------------------------------------------------------------------- - 6. Configuring KVIrc -------------------------------------------------------------------------------- - - Since KVIrc 4.2 uses CMake as build system, we have to use it to create - the Makefile's rules for make program. - - To do it, we encourage the "out-of-source" building: build all files - without dirtying the sources directory. - - $ cd /home/setup && cd KVIrc - $ mkdir build - - In this way you have just created an out-of-source environment which is - clean at the beginning and can be changed afterwards, as well as a clean - source directory. - - $ cd build - $ cmake [your options] .. - - Note: The two trailing dots are required when you build out-of-source. - - The CMake rules support some flags. If you don't specify them, CMake will - try to guess a good environment for you. - - To use these flags, you have to pass a bool value or a string. - e.g. To install KVIrc in /usr instead of /usr/local and to disable - Phonon support, the command looks like: - - $ cmake -DCMAKE_INSTALL_PREFIX=/usr -DWANT_PHONON=0 .. - - When using the configuration flags below. - - -DWANT_DEBUG= (default: OFF) - When enabled, compiles the executable with debug symbols. - Useful for reporting bugs. - Note: An alternative method of defining build type is using: - -DCMAKE_BUILD_TYPE= - - Supported options are: - - None Debug Release RelWithDebInfo MinSizeRel - - -DWANT_STRIP= (default: OFF) - Available only if debug is disabled, this flag disables objects - stripping before installation. - (Object stripping discards symbols from object files, lowering their - size on disk, at the expense of more complicated or rather impossible - debugging.) - - -DWANT_VERBOSE= (default: OFF) - Generate verbose output when compiling. - Note: this will be deactivated when using a job setting higher than 1 - with gmake. i.e., make -j2 will *not* show verbose compilation output. - - -DCMAKE_INSTALL_PREFIX=PATH 0 (default: a system-dependent directory) - This will install all stuff under PATH directory. - - -DLIB_SUFFIX=SUFFIX= (default: empty) - This will install libkvilib and KVIrc modules to - ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX} - directory. It defaults to an empty suffix. - Mainly used for x86_64 architectures. - - -DMANDIR=DIRECTORY= (default: $CMAKE_INSTALL_PREFIX/share/man) - This will install man pages to DIRECTORY. - - -DWANT_COEXISTENCE= (default: OFF) - If enabled, appends version information to KVIrc and libkvilib, so that - different KVIrc versions can co-exist on the same system. - - -DWANT_ENV_FLAGS= (default: OFF) - When enabled, KVIrc install rules won't try to figure out and set - CMAKE_C(XX)_FLAGS. Instead, it will let CMake use the ones taken - from environment variables. - Activating this flag will override the value of -DWANT_DEBUG. - - -DCMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT= (default: OFF, not cached) - This will re-initialize the installation path to a good default. - Following compilations should use the correct path value cached by CMake. - This flag is useful to solve macOS install problems. - - -DWANT_UNIVERSAL_BINARY= (default: OFF) - Enables or disables the compilation of universal binaries - for the macOS platform. - - -DWANT_PHONON= (default: ON) - Enables or disables Phonon audio backend support. - - -DWANT_OSS= (default: ON) - Enables or disables OpenSoundSystem audio backend support. - If disabled, audiofile support will be disabled as well. - - -DWANT_AUDIOFILE= (default: ON) - Enables or disables audiofile audio backend support. - - -DWANT_ESD= (default: ON) - Enables or disables ESounD audio backend support. - - -DWANT_QTDBUS= (default: ON) - Enables or disables Qt D-Bus support. - - -DWANT_QTWEBKIT= (default: ON) - Enables or disables Qt WebKit support. - - -DWANT_KDE= (default: ON) - Enables or disables KDE support. The KDE version used - depends on the Qt version used. Qt4 implies KDE4, Qt5 implies KDE5. - - -DWANT_OPENSSL= (default: ON) - Enables or disables the cryptographic functions support using OpenSSL. - - -DWANT_CRYPT= (default: ON) - Enables or disables the cryptographic engines and the whole cryptography/text - transformation support. Produces a slightly smaller executable. - You will lack features, though. - - -DWANT_IPV6= (default: ON) - Enables or disables the IPv6 support. - Even if you have a plain IPv4-only connection, you might want to - keep the IPv6 support. This way you will be able to resolve - IPv6 hostnames. - - -DWANT_TRANSPARENCY= (default: ON) - This option enables or disables pseudo and real transparency support. - The pseudo-transparency support makes the KVIrc windows - look like semi-transparent (this is NOT real transparency, it is - just a neat-looking hack). Transparency uses compositing and needs - proper hardware support to work. - 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 with - all window managers). - It is cool-looking but usually eats some memory and makes the - executable slightly bigger, when enabled. Especially when moving - objects around, CPU consumption may get high as well. - You can thus disable transparency here. - - -DWANT_GTKSTYLE= (default: OFF) - QGtkStyle is a Qt backend that uses native GTK widgets. - By default we disable QGtkStyle since it interferes with KVIrc's internal - theme engine and there maybe some unwanted styling that you may consider broken. - Some users want to use it anyway. Please don't report any theme-related bug - if you enabled this option: we already know it's limitations and issues. - For further information / discussion see: - https://github.com/kvirc/KVIrc/issues/2117 - - -DWANT_PERL= (default: ON) - Enables or disables Perl support. - You will not be able to use Perl scripts inside of KVIrc. - You still can execute Perl scripts outside of KVIrc, i.e. with - the exec() command. - Note: Perl support will be checked anyway, and used to generate - the documentation if present. - - -DWANT_PYTHON= (default: ON) - Enables or disables python support. - You will not be able to use Python scripts inside of KVIrc. - - -DWANT_IPC= (default: ON) - Enables or disables support for inter-process communication. - You will not be 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 command-line switch. - If a session is already running, the command-line will be - passed to that session via IPC (X-event-based communication). - This option saves the KVIrc executable some KByte in size, - so if you're really, really short in memory, you might use it, - otherwise, IPC is a nice feature. - - -DWANT_GETTEXT= (default: ON) - Enables or disables the use of GetText to generate translation files. - - -DWANT_DOXYGEN= (default: ON) - Enables or disables developers docs generation through Doxygen. - - -DWANT_GSM= (default: ON) - Enables or disables 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. :) - - -DWANT_IGNORE_SIGALARM= (default: OFF) - Under Solaris, both usleep() and threads implementation are based on - SIGALARM. KVIrc uses both, and this could lead to some spontaneous - application quits. This option enables a workaround for this problem. - - -DWANT_DCC_VOICE= (default: ON) - Enables or disables 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 render DCC VOICE unusable). - - -DWANT_DCC_VIDEO= (default: OFF) - Enables or disables EXPERIMENTAL DCC VIDEO support. - - -DWANT_OGG_THEORA= (default: OFF) - Enables or disables EXPERIMENTAL Ogg/Theora Support for dcc video. - - -DWANT_DCC_CANVAS= (default: OFF) - Enables or disables OBSOLETE DCC CANVAS support. - - -DWANT_SPELLCHECKER= (default: ON) - Compile Spell-Checker Support. - Note: If libenchant development package is installed, - this option is automatically enabled during configuration. - - -DWANT_MEMORY_PROFILE= (default: OFF) - Enables or disables memory allocation profiling. - Don't set it, unless you are a developer and know what you are doing. - It will have high impact on executable size and most notably speed. - Please do not use this. - - -DWANT_MEMORY_CHECKS= (default: OFF) - Enables or disables 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. - Most systems do actually already notice you when you are out of RAM - (i.e. Linux and the OOM killer.) - Most probably you will not need to enable this flag. - - -DMANUAL_REVISION= (default: empty) - Manually set a revision number if subversion is not found on your - system. - This is useful mostly on windows. - Please do not specify useless information here, as it will make - debugging harder and you won't profit from it. - - -DWANT_PIZZA= (default: OFF) - Add some pizza for dinner. :) - - -DWANT_BEER= (default: OFF) - Add some beers to chat. :) - -------------------------------------------------------------------------------- - 7. Interactive CMake KVIrc configuration -------------------------------------------------------------------------------- - - The CMake build system provide also an interactive mode to configure - the environment before compiling. - Again, we encourage the "out-of-source" building: build all files - without dirtying the sources directory. - - $ mkdir build - $ cd build - $ ccmake .. - - Now you're in interactive mode, just follow the instructions on screen - to configure your compilation environment. - -------------------------------------------------------------------------------- - 8. Compiling -------------------------------------------------------------------------------- - - This step is easy: - Cross your fingers and run: - - 0. $ make - - If you have a multiprocessor or multicore machine then you can use -jN - to speed up the compilation. - - 1. $ make -j4 - - 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 2-3 minutes to several hours - depending on the machine capabilities and load. - If you have a slow old CPU but have a couple of computers in a LAN you might - consider using distcc to distribute the compilation. - - Once the compilation has finished successfully, run: - - $ sudo 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 haven't - specified a different -DCMAKE_INSTALL_PREFIX option in the CMake rules), - the libraries in /usr/local/lib (if you don't have specified a different - -DLIB_SUFFIX option in the CMake rules) and the shared data in - /usr/local/share/kvirc. - - Make sure that /usr/local/lib is in your /etc/ld.so.conf. If it isn't, - put it in there and run: - - $ sudo 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. - -------------------------------------------------------------------------------- - 9. Compiling on macOS -------------------------------------------------------------------------------- - - There is a detailed compilation and installation HOW-TO for macOS systems - located in the doc directory. It's named INSTALL-MacOS.txt. - -------------------------------------------------------------------------------- - 10. Compiling on Windows -------------------------------------------------------------------------------- - - There is a detailed compilation and installation HOW-TO for Win32 and Win64 systems - located in the doc directory. They're named INSTALL-Win32.txt and INSTALL-Win64.txt. - -------------------------------------------------------------------------------- - 11. Creating a KVIrc package -------------------------------------------------------------------------------- - - CMake supports DESTDIR argument. - So, if you want to make a package for your distribution, you simply have to pass - it at "make install" stage: your install files will go to the chosen path. - - $ make install DESTDIR=/tmp/kvirc-4.3 - - After this step, just follow your distribution's rules to make a good - package for the distro you're running. - - Alternatively, you can try the experimental CPack support included in - CMakelist.txt to build a package. In this case, please refer to the CPack - documentation. diff --git a/doc/LICENSE-GPLV2 b/doc/LICENSE-GPLV2 deleted file mode 100644 index ecbc05937..000000000 --- a/doc/LICENSE-GPLV2 +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - 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 Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License.
\ No newline at end of file diff --git a/doc/LICENSE-OPENSSL b/doc/LICENSE-OPENSSL index 7d0e2378b..3499e49e3 100644 --- a/doc/LICENSE-OPENSSL +++ b/doc/LICENSE-OPENSSL @@ -124,3 +124,35 @@ * copied and put under another distribution licence * [including the GNU Public Licence.] */ + + + _OpenSSL Exception_ + +0. Definitions + +"KVIrc" means KVIrc software licensed under version 2 or any later +version of the GNU General Public License (collectively, "GPL"), or a +work based on such software and licensed under the GPL. + +"OpenSSL" means OpenSSL toolkit software distributed by the OpenSSL +Project and licensed under the OpenSSL Licenses, or a work based on such +software and licensed under the OpenSSL Licenses. + +"OpenSSL Licenses" means the OpenSSL License and Original SSLeay License +under which the OpenSSL Project distributes the OpenSSL toolkit software, +as those licenses appear in the file LICENSE-OPENSSL. + +1. Exception + +You have permission to copy, modify, propagate, and distribute a work +formed by combining OpenSSL with KVIrc, or a work derivative of such a +combination, even if such copying, modification, propagation, or +distribution would otherwise violate the terms of the GPL. You must +comply with the GPL in all respects for all of the code used other than +OpenSSL. + +You may include this OpenSSL Exception and its grant of permissions when +you distribute KVIrc. Inclusion of this notice with such a +distribution constitutes a grant of such permission. If you do not wish +to grant these permissions, remove this section entitled "OpenSSL +Exception" from your distribution.
\ No newline at end of file diff --git a/doc/README b/doc/README deleted file mode 100644 index bf35b5a27..000000000 --- a/doc/README +++ /dev/null @@ -1,543 +0,0 @@ -29.12.2017: Release 5.0.0-beta1 -############################################################################### - -After some years and a couple of alpha releases we have a beta. -Well.. it's marked "beta" but you'll probably find it pretty much stable. -Several people have worked on the codebase and ultimately on this release. -Many of them hang daily around #kvirc@Freenode. Come and say hi! :) - -Have fun! -Szymon Stefanek and The KVIrc Development Team - - - -01.07.2012: Release 4.2.0 "Equilibrium" -############################################################################### - -Finally, a new major milestone version of KVIrc is released! - -Two years has passed since the original KVIrc 4 release. While the original -4.0 code was put in maintenance mode, a lot of time has been dedicated to merge -new features inside KVIrc. Today we present the result of this development. - -Support for new os/architectures: - - Mac OSX support, clang support - - 64-bit Windows support - - improved FreeBSD integration - - even an esperimental OS/2 patch is available - -More scripting power: - - the interface to the popup subsystem has been rewritten: the new popup module - - a new interface to the userlist: the userlist module - - a new webView class that embeds a webkit - - improved SQL classes - - a new trayicon KVS class - - added a default script manager to restore default scripts without overwriting - custom user scripts - - lots of new functions: $file.time(), $insideAlias(), $log.export(), - $file.diskspace(), $isBot(), $gender(), $context.connectionStartTime, - $context.lastMessageTime, $listtimers(), $window.isDocked, $aliasBody(), - $file.readBytes(), $file.writeBytes(), window.savePropertiesAsDefault, - $chan.modeParam(), ... - - new certificate related functions: $dcc.getSSLCertInfo(), $certificate(), - $str.evpSign(), $str.evpVerify() - -A lot of new misc features: - - a module to support FiSH irc encryption - - smart logging paths using KVS - - medialayer support: VLC, Spotify, Totem, Clementine, ... - - a rewritten log viewer module - - dynamic support for custom channel modes - -As usual, we'd like to thank all the people supporting KVIrc development and its -userbase. A big hug to the resident users of #kvirc@Freenode for their continuous -effort on bridging the gap between developers and users. - -Have fun :) -Szymon Stefanek and The KVIrc Development Team - - - -19.03.2011: Release 4.0.4 "Insomnia" -############################################################################### - -Here we go again: 4.0.4 is ready. - -This is mainly a bugfix release. - -Configuration from existing 4.0.0/4.0.2 installations will be completely preserved -and everyone is encouraged to upgrade. - -As usual, the bugs for this release should be reported by using the bugtrack -system available at https://svn.kvirc.de/kvirc/ - -Have fun :) -Szymon Tomasz Stefanek and The KVIrc Development Team - - - -01.08.2010: Release 4.0.2 "Insomnia" -############################################################################### - -Here we go again: 4.0.2 is ready. - -This is mainly a bugfix release. 4.0.0 went public after a very long delay and -even if we have tested it thoroughly some problems still managed to escape our -attention. There are fixes for several minor annoyances and the very important -patch for a security issue related to DCC handshakes (secunia advisory SA40727) - -Configuration from existing 4.0.0 installations will be completely preserved -and everyone is encouraged to upgrade. - -As usual, the bugs for this release should be reported by using the bugtrack -system available at https://svn.kvirc.de/kvirc/ - -Have fun :) -Szymon Tomasz Stefanek and The KVIrc Development Team - - -27.06.2010: Release 4.0.0 "Insomnia" -############################################################################### - -And again, after more than one year, we're back with a new release. - -The major version increment from 3 to 4 reflects a big milestone reached by the -project: the port to Qt4 has been officially completed. This required a lot of -code to be rewritten and I must say that we have suffered it a bit. But now -it's done and Qt4 is a great framework to base KVIrc on, far better than Qt3. - -Notable new features of this release include: - -- Definitive and stable port to the Qt4 libraries -- A brand new build system based on CMake (no more ./configure) -- Better support for server tecnologies: CAPS, STARTTLS, SASL, irc services... -- A new UPnP module to control and remotely map your router ports for DCC -- A totally rewritten MDI subsystem, with the look and feel of your OS -- A nice graphical addon packager -- A visual class editor for object oriented scripting -- A rewritten iograph module to check your bandwidth usage -- Support for animated avatars -- Ability to get other user's avatars/information without the need to - CTCP the whole channel -- Support for DBus inter-process communication -- Support for the MPRIS media player control and info reporting -- Support for Phonon direct media playback -- Improved platform compatibility for KDE4, MacOSX, Seven etc... -- A lot of new options to better customize your client -- A lot of new KVS commands and functions for your scripting needs -- Tons of bug fixes, more than 500 only from the bugtracker -- A better documentation of the code for those who like to give a look at it. -- Months of testing and fixing to assure you an optimal IRC experience ;) -_ ... - -Again a lot of people contributed to this release. It would be simply unfair -not to mention the huge development effort made by Elvio Basello (HelLViS69), -Fabio Bas (CtrlAltCa) and Alessandro Carbone (Noldor). Without their hard work -KVIrc 4.0.0 wouldn't be possible. - -Other kudos go to Markus Rennings (mren), Kai Wasserbäch (Curan), -Jan Wagner (spy6), Claudia Mongini (etherea), Jose (Zé) Melo (mmodem), -Alexey Uzhva (alexey), Robert Förster (Dessa), ambossarm, TheXception, -Voker57, Thomas Kalla, bugslayer, Aeriana, Desowin and obviously to everyone -on #kvirc@freenode who provided testing and support. - -Well... it's time to play with it. - -Have fun :) -Szymon Stefanek and The KVIrc Development Team - -############################################################################### -General notes for the 4.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: 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 -https://github.com/kvirc/KVIrc/issues/. 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 information -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 (svn, kvirc site, other sites). - - - - - - - - -############################################################################### -# Historic entries : just for the curious -############################################################################### - -15 October 2008: Release 3.4.2 "Shiny" -############################################################################### - -Here we go with another release :) - -In march we said that 3.4.0 was the last release of the 3.* but we've found -that a little update wasn't going to hurt while the mainstream 4.* is being -worked out. Technically this is a mainly bugfix release: there are no major -new features inside. Some annoying 3.4.0 bugs were wiped out, some docs were -updated and we'll hopefully have a more stable windows binary. - -If you're using 3.4.0 (or some older version) then you're strongly encouraged -to upgrade. - -Have fun :) -Szymon Stefanek and The KVIrc Development Team - - - - - -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 completely 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 - - - - - -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 -information 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 information 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 split in smaller "pieces" and a GUI toolbar editor has been added. - -Finally there are tons of bugfixes and improvements: just play with it :) - -The bugs for this release should be reported by using the bugtrack system available -at http://bugtrack.kvirc.omnikron.net. - -Have fun :) -Szymon Stefanek and The KVIrc Development Team - -############################################################################### - - - -25.06.2002 -############################################################################### - -3.0.0 beta1 (Codename: "Eve's Avatar") - -This release is "floating around" since a couple of months... -Well... finally... here we go :) -This is not stable yet, but many people use it and we get a really small number of -critical reports: this means that you probably can use it for your daily chatting. - -Beta1 is being released as a source package and a binary distro for the windows platform. -Binary packages for other platforms might be available soon so check out the download section once in a while. - -If you had previous KVIrc installations and you experience problems (missing menus for example) -try to remove (or better just rename) the old local configuration directory (locaed -in your home dir probably) and to restart KVIrc. - -80% of the 2.* branch features have been already re-implemented and there is a whole -bunch of new things to play with. One of the greates "ChangeLog" entries is the preliminary -SSL support that works for IRC and DCC CHAT (both over IPv4 and IPv6). -CTCP PAGE support has been added and there were some major changes to the variable -management in the scripting language (added "real" array support and changed the syntax for the dictionaries). -Those of you that like colors can now enable the icon-like display of emoticons -and play with icons in the text sent through the server (a new escape code). -The documentation has been reworked a little bit more, there are some new modules and -a lot of new options to try. - -The windows version is not completely in sync with the linux one thus you might find -that it lacks some features (mainly advanced scripting language, sound support etc...). -We hope to have a completely synchronized versions on both platforms for the time -of 3.0.0 final. - -The bugs for this release should be reported by using our new shiny bugtrack system available -at http://bugtrack.kvirc.omnikron.net. - -Well.. -That's all folks! - -Have fun :) -Szymon Stefanek and The KVIrc Development Team - -############################################################################### diff --git a/doc/TODO b/doc/TODO deleted file mode 100644 index a69d50558..000000000 --- a/doc/TODO +++ /dev/null @@ -1,14 +0,0 @@ -Update TODO file, if something is implemented, it should be removed in the TODO file. -Maintain TODO file as clear as possible - -- Events, events, events. There are lots of them pending (see TODO.Events). -- /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) - SHould get the available modes from RPL_ISUPPORT and show them in the box -- 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. diff --git a/doc/TODO-cmake b/doc/TODO-cmake deleted file mode 100644 index 9dce4045c..000000000 --- a/doc/TODO-cmake +++ /dev/null @@ -1,5 +0,0 @@ -This file contains all the things that have to be done to complete the -transition autotools -> cmake. - -* Missing or broken rules -- uninstall: delete directories diff --git a/doc/TODO-events b/doc/TODO-events deleted file mode 100644 index 3c5ff166d..000000000 --- a/doc/TODO-events +++ /dev/null @@ -1,58 +0,0 @@ -WRITE DOCS!!! :P - -This is a list of old KVIrc 2.x events that are not present yet on KVIRC 3/4. -Please remove as you implement them. - -OnCTCPMultimedia -OnError -OnEventError -OnIdleStart -OnIdleStop -OnLogin? -OnUnhandedNumeric -OnUserWindowFileDrop -OnUserWindowInput -OnWhoisReply -> kvi_sp_numeric.cpp 851 - -(10) - - -Commands (Pragma please review, maybe remove ircop commands?) --------- - -CD -CTTPREPLY -DIR -FINDTEXT -GEOMETRY -KILLPROC -LOCOPS -MULTIMEDIA -OPNOTICE -OPERSERV -OS -OWNER -PROCLIST -REHASH -STATSERV -STATUS -UNEXCEPT - -(17) - -Functions ---------- -DurationToString -GetEnv -Icon -InetAton -InetNtoa -IsMe -IsValidIp -New needs documentation! -NumTimeToString -Range -StrCat -Uname - -(12) diff --git a/doc/accelerator.keys.txt b/doc/accelerator.keys.txt deleted file mode 100644 index 5398bcb24..000000000 --- a/doc/accelerator.keys.txt +++ /dev/null @@ -1,135 +0,0 @@ -This is a comprehensive list of all accelerator keys defined in KVIrc. -An accelerator key is a combination of keyboard buttons that, when pressed -together, accomplish an action which otherwise would be achieved by moving -the mouse or selecting from a menu. - - Some notes on keys: - -Under Windows, the Ctrl+Alt is mapped to the AltGr (Alternative Graphics) key. -Since AltGr is used in many keyboard layouts to produce special characters, -the use of any Ctrl+Alt hotkey is discouraged. -A list of standard window hotkeys can be found here: http://support.microsoft.com/kb/126449 -Under Unix*/KDE, a lot of keys are globally binded to specific software, e.g. - Ctrl+Shift+S shows the contact list of Kopete - Ctrl+Alt+S stops the music player juk -A list of these can be found at SystemSettings->Keyboard and mouse->Global keyboard shortcuts. - - All the standard keys alphabetically ordered: - -F1 Help Index (Window) - -Ctrl+A Select all -Ctrl+B Insert Bold control character -Ctrl+ Copy to clipboard -Ctrl+D -Ctrl+E -Ctrl+F Open "Find Text" dialog -Ctrl+G -Ctrl+H -Ctrl+I Open "Insert icon" dialog -Ctrl+J Open "Join Channels" dialog -Ctrl+K Open "Insert Color" dialog -Ctrl+L -Ctrl+M -Ctrl+N Open new context -Ctrl+O Insert Reset control character -Ctrl+P Insert "Plain text" control character -Ctrl+Q -Ctrl+R Insert Reverse control character -Ctrl+S Open "Servers" dialog -Ctrl+T Open "Manage Toolbars" dialog -Ctrl+U Insert Underline control character -Ctrl+V Paste clipboard contents -Ctrl+W Close current window -Ctrl+X Cut to clipboard -Ctrl+Y Redo last action -Ctrl+Z Undo last action - -Ctrl+Shift+A Go away/back -Ctrl+Shift+B -Ctrl+Shift+C Connect/disconnect current irc context -Ctrl+Shift+D -Ctrl+Shift+E Open Event editor -Ctrl+Shift+F -Ctrl+Shift+G -Ctrl+Shift+H -Ctrl+Shift+I Open Identity options -Ctrl+Shift+J -Ctrl+Shift+K -Ctrl+Shift+L Open Alias editor -Ctrl+Shift+M -Ctrl+Shift+N -Ctrl+Shift+O Open "Options" dialog -Ctrl+Shift+P Open Popup editor -Ctrl+Shift+Q Open Action editor -Ctrl+Shift+R Open Raw events editor -Ctrl+Shift+S Open Script tester -Ctrl+Shift+T Open "Theme Options" dialog -Ctrl+Shift+U Open "Registered users" dialog -Ctrl+Shift+V -Ctrl+Shift+W -Ctrl+Shift+X Open "Execute Script" dialog -Ctrl+Shift+Y -Ctrl+Shift+Z - - - Window handling related keys: - -Alt+UpArrow Previous window -Alt+DownArrow: Next window -Alt+PageUp: Previous highlighted window -Alt+PageDown Next highlighted window -Alt+Shift+UpArrow: Previous window in the same IRC context -Alt+Shift+DownArrow: Next window in the same IRC context -Ctrl+UpArrow: Maximizes current window -Ctrl+DownArrow / ESC: Minimizes current window -Shift+<F1-F12> Window switch -PageUp: Scroll the output window up one page -PageDown: Scroll the output window down one page -Shift+PageUp: Scroll the output window up one line -Shift+PageDown: Scroll the output window down one line -Ctrl+W: Close current window - - - Text editing related hotkeys: - -Ctrl+LeftArrow: Selection left to the previous word -Ctrl+RightArrow: Selection right to the next word -Ctrl+Shift+LeftArrow: Previous word -Ctrl+Shift+RightArrow: Next word -Ctrl+<digit>: Script accelerators (see OnAccelKeyPressed) -F2-F12, Shift+(F1-F12): Script accelerators (see OnAccelKeyPressed) -Ctrl+B: Insert the 'bold' mIRC text control character -Ctrl+K: Insert the 'color' mIRC text control character -Ctrl+R: Insert the 'reverse' mIRC text control character -Ctrl+U: Insert the 'underline' mIRC text control character -Ctrl+O: Insert the 'reset' mIRC text control character -Ctrl+P: Insert the 'non-crypt' (plain text) KVIrc control character used to disable encryption of the current text line -Ctrl+C: Copy the selected text to clipboard -Ctrl+X: Cut the selected text -Ctrl+V: Paste the clipboard contents (same as middle mouse click) -Ctrl+I: Insert the 'icon' control code and pops up the icon list box -CursorUp: Move backward in the command history -CursorDown: Move forward in the command history -Ctrl+PageUp: Open the history popup -CursorRight: Move the cursor to the right -CursorLeft: Move the cursor to the left :) -Shift+CursorLeft: Move the selection to the left -Shift+RightCursor: Move the selection to the right -Alt+Enter: Show/hide the multiline editor -Ctrl+Enter: Send message as plain text, ignoring / commands -Alt+<numeric_sequence> Insert the character by ASCII/Unicode code; example: -Alt+32 Inserts ASCII/Unicode character 32: ' ' (a space) -Alt+00032 Same as above :) -Alt+13 Inserts the Carriage Return (CR) control character -Alt+77 Inserts ASCII/Unicode character 77: 'M' -Alt+23566 Inserts Unicode character 23566 (an ideogram) - - - Completion hotkeys - -Tab in the first word of input: Complete nicknames in the current channel or query -Tab after a leading /: Complete commands -Tab after a / in the middle of input: Complete directories -Tab after a $: Complete function names -Shift+Tab after the first word of input: Complete masks in the current channel or query diff --git a/doc/addon.howto.txt b/doc/addon.howto.txt deleted file mode 100644 index 90ea6dcfc..000000000 --- a/doc/addon.howto.txt +++ /dev/null @@ -1,323 +0,0 @@ -Elvio Basello, 22-06-2010 -hell at hellvis69 dot netsons dot org - -SUMMARY -======= -1. PREFACE -2. INSTALLATION -3. A TYPICAL ADDON LAYOUT -4. SOME EXAMPLES -5. HINTS -6. WHERE TO START - - -1. PREFACE - -Starting from the release 4.0.0 KVIrc supports the addon packaging system. - -A KVIrc addon is basically a zip package containing a subset of user-defined icons, -aliases, functions, classes and all stuff needed to implement a new KVIrc feature. -It might be a simple automatic-away subsystem, a GUI newsticker or a complex file -sharing service (commonly called "fserve"). Addons are sometimes called "scripts". -In fact a KVIrc addon is usually made of more than one KVS script. - -KVIrc has a builtin addon management system that allows the users to create, install, -configure and uninstall features with a nice graphical interface. The management -system allows the addons to have documentation integrated in the KVIrc help and to -be translated in several languages. - - -2. INSTALLATION - -The addons are usually shipped in compressed archives (.kva). A simple double -click on the *.kva file should be sufficient to install the addon for the current user. - -Another way to install the package is to use the /addon.install command. -Under the hood, the double click will just invoke kvirc by passing the *.kva file -name as parameter. KVirc will recognize it as being an addon package and will -automatically invoke "/addon.install <filename>" on it. - - -3. A TYPICAL ADDON LAYOUT - -As stated above, the addons are usually shipped in a compressed archive. The -/addon.install command will uncompress it to a temporary directory. -The uncompressed tree is substantially the same directory tree that you have -to create in order to package your addon and it usually looks like this: - - name-version/ - +- install.kvs - +- src/ - | +- source1.kvs - | +- source2.kvs - | \- ... - +- locale/ - | +- name_it.mo - | +- name_de.mo - | \- ... - +- config/ - | +- config1.kvc - | +- config2.kvc - | \- ... - +- audio/ - | +- audio1.wav - | +- audio2.wav - | \- ... - +- pics/ - | +- pic1.png - | +- pic2.png - | \- ... - +- help/ - +- en/ - | +- index.html - | +- hints.html - | \- ... - +- it/ - +- index.html - +- hints.html - \- ... - -The entries with a slash (/) at the end are directories while the other are files. - -The toplevel directory should be named with your addon name and version. Use no spaces -in the directory entries: this will make the things simpler for people that want to -use your addon. - -The install.kvs is the mandatory initialization script which must contain all the -procedures required to register your addon inside the KVIrc subsystems and install -all your addon data files. - -For example: - - ... - addon.register("MyAddon", \ - "1.0.0", \ - "My First Addon", \ - "An addon that is really cool but does - simply nothing", \ - "4.0.0", \ - "MyAddon_32.png" \ - ) - { - } - - addon.installfiles "MyAddon" "pics" "pics/*.png" - addon.installfiles "MyAddon" "locale" "locale/*.mo" - addon.installfiles "MyAddon" "config" "config/*.kvc" - addon.installfiles "MyAddon" "audio" "audio/*.wav" - addon.installfiles "MyAddon" "help/en" "help/en/*.html" - addon.installfiles "MyAddon" "help/it" "help/it/*.html" - - # Register classes - MyAddon::classes::register - - # Initialize events - MyAddon::events::init - - # Load configuration - MyAddon::config::load - - # Setup popups - defpopup("MyAddon") - { - item($tr("Something","MyAddon"),110) - { - ... - } - } - - # Set options - option boolAutoAcceptDccSend 1 - option boolShowMinimizedDebugWindow 1 - - # Invoke sources - include "src/mystuff.kvs" - ... - - -The install.kvs is the only really mandatory piece of an addon. Most real-world addons, -however, will be split over several kvs source files. Canonically these -source files are placed in the src/ subdirectory and the install.kvs must invoke them -them in the right order. More about the install.kvs script in section 4. - -If your addon is translated in different languages then the "locale" directory should -contain the *.mo catalogue files for your translations. The localization process of a -script is explained in the KVIrc documentation. Your *.mo filenames should be prefixed -by your addon name. - -If your addon needs an initial configuration then your config files should be placed -in the "config" subdirectory and should have *.kvs as extension. - -The "pics" and "audio" (if relevant) directories should contain your multimedia files. -It's a good idea to have your pics file in PNG format and sound files in WAV format. - -The "help" directory should contain subdirectories for each language your help files -are written in. The languages dirs should be named with the language code also used for -the translation files (like "en", "it" etc...). - -Please note that English is the default language and KVIrc will fallback to the "en" -subdirectory when no other language is found around... - - -4. THE INIT FILE - -The smallest addon that you can write is the one that does nothing. - - addon.register("MyAddon", \ - "1.0.0", \ - $tr("My First Addon","myaddon"), \ - $tr("An addon that is really cool but does - simply nothing","myaddon"), \ - "4.0.0", \ - "MyAddon_32.png") - { - } - - -The code above does nothing but registers the "MyAddon" addon. - - -The first parameter is the internal addon id which can be used to identify your addon -inside KVIrc. The id must be unique: two addons that share the same name cannot be -installed. -The second parameter is the addon version. It should be expressed in the classic format -[major].[minor].[pathlevel] or something really similar (in fact KVIrc just expects the -version to be a string composed of numbers separated by dots). The version is compared -when an addon is installed and KVIrc complains if the user tries to downgrade an addon -(that is to install a less recent version over a more recent one). -The third parameter is the visible name of your addon: it will be displayed to the user -in the addon management dialog. It can contain the $tr function so you can have it -translated to several languages: in this case, our string will be translated in the -catalogue myaddon. -The fourth parameter is a short description of the feature that the addon implements; -it can contain the $tr() function too. -The fifth parameter is the minimal KVIrc version required to run the addon. -The sixth parameter is the icon to show in the manager: it has to be 32x32 pixel big. -There are also some switches that can be used to fiddle a little bit more :) - - -5. THE HELP AND CONFIGURATION CALLBACKS - -Each addon can have a help and a configuration callback. These are set respectively by -addon.sethelpcallback and addon.setconfigurecallback. -The help callback will be invoked by KVIrc when the user will ask help for your addon -(mainly from the addon management dialog, but not necessarily). It should call help.open -with the name of your documentation index html file (it should be relative to the help -language directory. - -Hint: help.open myaddon/index.html will automatically lookup the right language - -If you provide no help callback, the button for requesting help will be simply disabled. -A good and relatively complex addon *should* have at least a minimal help file explaining -the features. - -The configuration callback will be invoked when the user will try to configure your addon -from the addon management dialog. This callback is useful mainly for more complex graphical -scripts that can show up a dialog that allows configuring all of the addon features. -To use this callback you will probably need some object scripting. - - -6. THE REAL WORK - -The real addon work is done by the scripts contained in the source directory. They will -likely add aliases (maybe in a nice namespace named against your addon), register event -handlers, create actions, timers, toolbars and object classes. You should install all of -this stuff from your addon source files. - -Remember that your source files will NOT be parsed every time KVIrc starts up: your stuff -must be registered in KVIrc and be able to startup itself, if needed. You must clean up -everything in your uninstallation callback. This means that you must remove the aliases, -unregister the event handlers, destroy the actions, kill the timers and the object classes -you've created. Be a clean coder :) - - -7. SOME EXAMPLES - -The code below is just an example of how to write a useful initalizazion of your own addon. -The name of the classes refer to the ones described above. - - # Register the classes - alias(MyAddon::classes::register) - { - # Create an array with all the classes of our addon. - # In this way it's easy to add or remove classes in the registering routine - %classes[] = $array( \ - MyAddon::classes::database, \ - MyAddon::classes::gui::options, \ - ... - ) - - # Scan the array and register the classes - for(%i=0; %i < $length(%classes[]); %i++) - { - if($classDefined("%classes[%i]")) - { - objects.killClass %classes[%i] - } - eval %classes[%i] - } - } - - # Initialize events - alias(MyAddon::events::init) - { - event(OnKVIrcStartup,"MyAddon") - { - ... - # Load the catalogue (translation) file "myaddon" from the path provided - trload myaddon $file.localdir("locale/MyAddon") - MyAddon::config::load - ... - } - event(OnChannelMessage,"MyAddon_something") - { - ... - } - } - - # Load configuration - alias(MyAddon::config::load) - { - # If the class ConfHandler is not defined, register all classes we have - if(!$classDefined(MyAddon::classes::ConfHandler)) - { - MyAddon::classes::register - } - - # Set some variables - %MyAddonConfig = $new(MyAddon::classes::ConfHandler) - %MyAddonConfigPath = $file.localdir(config/scripts/MyAddon) - - # Open the configuration file and move to the section "general" - %c = $config.open(%MyAddonConfigPath/MyAddon.kvc,"r") - config.setsection %c general - - # Store the value of the key "Key" in the global variable %Key - %Key = $config.read(%c,"Key",2) - ... - } - - -8. HINTS - -- Use namespaces for your aliases and your classes. This will help avoiding - collisions with other scripts and addons. - -- Remember that your addon is going to be installed on different platforms (at - least Linux, macOS and Windows based). The poor Windows' notepad has serious problems - with reading text files that contain only linefeeds as line separators. - You could consider using a proper editor like e.g. Notepad++ - - -9. WHERE TO START - -It is a good idea to start on the KVIrc web site. There are surely several addons to -look at. Pick one that seems simple and analyze its layout and code (wow... the free -software!). It will be easier to do than it was to explain it :D - -Another great resource place is the IRC channel #kvirc located on irc.freenode.org -network. There you can find many people able to code and help you. - -Have fun! :) - -Elvio Basello diff --git a/doc/firefox.hack.txt b/doc/firefox.hack.txt deleted file mode 100644 index 9b31e63c1..000000000 --- a/doc/firefox.hack.txt +++ /dev/null @@ -1,32 +0,0 @@ -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, e.g. /usr/bin/kvirc, - `which kvirc` or C:\Programs\Firefox\firefox.exe - -- Make sure that network.protocol-handler.expose-all are set 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 protocol - -Elvio Basello -<HelLViS69> diff --git a/doc/hackers.guide.txt b/doc/hackers.guide.txt deleted file mode 100644 index e41f570e9..000000000 --- a/doc/hackers.guide.txt +++ /dev/null @@ -1,998 +0,0 @@ -KVIrc hackers guide - Szymon Stefanek - 2004.05.26 -last updated on 2012.07.01 -------------------------------------------------------------------------------- - -This is an always-work-in-progress guide for KVIrc source code hackers. - -------------------------------------------------------------------------------- -The source tree -------------------------------------------------------------------------------- - -/ Root directory. -| This is almost completely CMake stuff. -| -|-- admin Administrative files and document generation scripts. -| -|-- cmake Build files using the new CMake system resides in here. -| -|-- data Data for the KVIrc program. Most of this stuff is -| | installed in $(prefix)/share/kvirc/$VERSION/ -| | -| |-- applnk *.desktop and menu entries for KDE -| | -| |-- audio audio files: currently only a test file -| | -| |-- 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 -| | -| |-- manifests Manifests needed to compile under win32 using VC++ -| | -| |-- msgcolors Default sets of message colors -| | -| |-- pics Most of the pictures that KVIrc uses -| | -| |-- protocols irc:// and irc6:// protocol definitions for konqueror -| | -| |-- resources_mac Resources for the macosx compilation -| | -| `-- resources_win32 Resources for the windows compilation -| -|-- doc Any kind of documentation -| -|-- po Internationalization (i18n :) -| | msgcheckformat.c is a small program to check/fix for -| | for broken format strings in translations -| | -| |-- core Translations for the main application -| | | -| | |-- defscript Translations for the default script -| | | -| | |-- kvirc Translations for kvilib and main KVIrc executable -| | | -| | `-- kvs Translations for the script parser -| | -| `-- modules Translations for the modules -| -|-- scripts Some misc scripts. -| | -| |-- config A pkgconfig-like tool to get info about KVIrc paths -| | -| `-- pydocparser A python script to create html user documentation; an -| alternative to admin/gendoc.pl -| -|-- 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. -| | | -| | |-- 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 -| | | -| | |-- irc IRC protocol related classes -| | | -| | |-- locale Translations 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 -| | | -| | |-- 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. -| | | This two-stage UNICODE KVS interpreter replaces the -| | | old uparser and is the default scripting engine -| | | since kvirc 3.4. -| | | -| | |-- 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. -| | -| `-- modules Yes, the modules :D -| | -| |-- about The about dialog -| | -| |-- action The action module -| | -| |-- actioneditor The action editor -| | -| |-- addon The addon module -| | -| |-- aliaseditor The alias editor window -| | -| |-- avatar Avatar manipulation stuff -| | -| |-- chan $chan.* scripting stuff -| | -| |-- channelsjoin The channelsjoin dialog -| | -| |-- classeditor The class (OOP) editor -| | -| |-- clock This was a clock applet but actually it is not -| | working and thus not compiled. -| | -| |-- codetester The codetester window -| | -| |-- config config.* scripting stuff -| | -| |-- context The context module -| | -| |-- dcc This module implements the whole DCC protocol. -| | Windows, transfer threads etc: everything is here. -| | -| |-- dialog dialog.* scripting stuff -| | -| |-- editor The scripting editor core widget. -| | -| |-- eventeditor The event editor window -| | -| |-- file file.* scripting stuff -| | -| |-- filetransferwindow The file transfers window -| | -| |-- fish FiSH IRC encryption support -| | -| |-- help The help browser -| | -| |-- http http.* scripting stuff -| | -| |-- ident A small ident daemon -| | -| |-- iograph an input/output graph window -| | -| |-- lamerizer A crypt/text-transformation engine -| | -| |-- language A language detector module -| | -| |-- links The links window -| | -| |-- list The channel list window -| | -| |-- log log.* scripting stuff -| | -| |-- logview The logviewer window -| | -| |-- mask mask.* scripting stuff -| | -| |-- math the math module -| | -| |-- mediaplayer the media player module -| | This is an interface to some multimedia programs -| | (amarok, audacious, juk, xmms, winamp) and libs -| | (amip, DBus). This replaces the old mp3player -| | module. You'll need to satisfy some dependencies -| | to enable support for a specific program/library, -| | by example 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. -| | -| |-- mircimport A server entry importer from the mIRC's servers.ini -| | -| |-- my my.* scripting stuff -| | -| |-- notifier the notifier module creates a dialog that keeps you -| | informed about new messages when KVIrc is minimized -| | -| |-- objects All the object oriented scripting stuff -| | -| |-- options The options dialog -| | -| |-- perl The perl scripting module -| | -| |-- perlcore The perlcore module -| | -| |-- popup popup.* scripting stuff -| | -| |-- popupeditor The popup editor window -| | -| |-- proxydb The proxy DB management stuff from KVS -| | -| |-- python The python scripting module -| | -| |-- pythoncore The pythoncore module -| | -| |-- raweditor The raw events editor window -| | -| |-- regchan regchan.* scripting stuff -| | -| |-- reguser reguser.* scripting stuff -| | -| |-- rijndael A crypting engine -| | -| |-- rot13 A crypt/text-transformation engine -| | -| |-- serverdb The server DB management stuff from KVS -| | -| |-- 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 -| | -| |-- term The embedded terminal emulator (needs KDE) -| | -| |-- texticons Texticons handling functions module -| | -| |-- theme Theme management/package module -| | -| |-- tip The tip of the day -| | -| |-- tmphighlight tmphighlight.* scripting stuff -| | -| |-- toolbar toolbar.* scripting stuff -| | -| |-- toolbareditor The toolbar editor window -| | -| |-- torrent The torrent module -| | -| |-- trayicon The trayicon module -| | -| |-- upnp The UPnP management module -| | -| |-- url The url window -| | -| |-- userlist userlist.* scripting stuff -| | -| |-- window window.* scripting stuff -| | -| `-- zzz_afterlastmodule A dummy module used by the compilation -| process to execute last-minute cleanup -| -| -`-- dist/windows The directory for Windows builds - -As of 2004.05.26: -[pragma@phoenix src]# cat $(find ./ -name \*.h) | wc -l - 60189 -[pragma@phoenix src]# cat $(find ./ -name \*.cpp) | wc -l - 164400 - -As of 2008.04.26: -[pragma@phoenix src]# cat $(find ./ -name \*.h) | wc -l - 49663 -[pragma@phoenix src]# cat $(find ./ -name \*.cpp) | wc -l - 237020 - -As of 2009.09.01: -[pragma@phoenix src]# cat $(find ./ -name \*.h) | wc -l - 59081 -[pragma@phoenix src]# cat $(find ./ -name \*.cpp) | wc -l - 244976 - -As of 2010.01.02: -[pragma@phoenix src]# cat $(find ./ -name \*.h) | wc -l - 61101 -[pragma@phoenix src]# cat $(find ./ -name \*.cpp) | wc -l - 254434 - -As of 2012.07.01: -[pragma@phoenix src]# cat $(find ./ -name \*.h) | wc -l - 66672 -[pragma@phoenix src]# cat $(find ./ -name \*.cpp) | wc -l - 271397 - -As of 2015.08.24: -pragma@photon:/src/pragma/kvirc-git/KVIrc$ cloc ./ - 5654 text files. - 4080 unique files. - 2882 files ignored. - -http://cloc.sourceforge.net v 1.60 T=7.61 s (417.3 files/s, 76656.1 lines/s) -------------------------------------------------------------------------------- -Language files blank comment code -------------------------------------------------------------------------------- -C++ 858 36407 63486 223125 -HTML 1317 257 0 129327 -C/C++ Header 518 7540 27983 34989 -make 75 7557 6406 19576 -CMake 383 2191 2944 15615 -Perl 5 317 263 2072 -Pascal 2 47 172 1267 - ^--- Pascal? Really? -C 6 128 82 706 -Bourne Shell 7 139 113 581 -YAML 2 0 11 185 - ^--- ??? -Python 1 21 14 54 -DOS Batch 1 18 11 24 -XML 1 0 0 19 -CSS 1 1 3 12 -------------------------------------------------------------------------------- -SUM: 3177 54623 101488 427552 -------------------------------------------------------------------------------- - - -------------------------------------------------------------------------------- -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. - -- Sources include some arch/compile specific defines: - - Windows compilation (using MS Visual c++ projects) has COMPILE_ON_WINDOWS #defined; - - Windows compilation (using Cmake+MinGW) has COMPILE_ON_MINGW #defined; - - a unix* compilation with KDE support has COMPILE_KDE_SUPPORT #defined; - - a MacOs compilation (using gnu tools) has COMPILE_ON_MAC #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 occurrences 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 assignment 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 calling - 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 occurrences 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 unmaintainable the splitting has been unavoidable. - -KviIrcConnection represents 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 has 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 information 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 temporarily 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 git 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 git -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.git10) -we say that it is comparable only to the version strings -that have the same letter pattern: 3.2.6.git10 and 4.3.1.git344 -are comparable but 3.2.6.git10 and 3.2.6.cvs15 are not. -For comparable strings we strip the letters in order to make the comparison. - -- Stable and unstable versions - -Historically our numbering scheme didn't tell which versions were stable -and which are unstable. The versions were declared to be (more or less) stable -by other means (read: the mailing list and the www site). -It is true, though, that stable versions were likely to have -more numbers omitted (3.5 looks more "stable" than 3.4.5.43), -but in the end this wasn't a strict requirement. - -However, the request for a more standardized versioning scheme is quite -recurrent so we *might* try to use the following one from now on: - - + Major versions have no scheme. Developers decide when to increase them. - When a major number increases the minor and patchlevel restart from 0. - - + Even minor versions are used for stable releases with major changes. - Odd minor versions are used for trunk git development. - - + For stable (even) minor numbers: - + Even patchlevel versions are used for public releases - + Odd patchlevel versions are used for git development - - + For unstable (odd) minor numbers - + The patchlevels are increased freely by the developers when a - particular milestone is reached. - -So: - - 4.1.0 is an unstable git build that comes from git HEAD - 4.1.3 is an unstable git build that comes from git HEAD that reached some - kind of third milestone - 4.2.0 is a stable with major changes with respect to 4.0.0 - it still comes from git HEAD - 4.2.1 is a work-in-progress build that comes from git branch 4.2 - 4.2.2 is a stable with bugfix changes with respect to 4.2.0 - it comes from git 4.2 branch - 4.2.3 is a work-in-progress build that comes from git branch 4.2 - 4.2.4 is a stable with bugfix changes with respect to 4.2.2 - it comes from git 4.2 branch - ... - -Note that in stable stuff both the minor AND the patchlevel are even numbers. - -Visually, for a single major number N, the development might resemble the -following scheme (R means 'stable public release'): - - R R R -trunk: N.0.0--N.1.0--N.1.1--N.1.2--N.1.3--N.2.0--N.3.0--N.3.1--N.4.0--N.5.0 - | | | -branch: +--N.0.1--N.0.2--N.0.3--N.0.4 +--N.2.1--N.2.2 +--N.4.1-... - R R R - -- 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 "trusted" location such -as the KVIrc web site). - -The semi-official packages are snapshots of the source tree made when -some important changes have occurred. 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 git 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 git -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 :) - - -------------------------------------------------------------------------------- -Code documentation -------------------------------------------------------------------------------- - -KVIrc is LARGE. We need to start documenting the source code if we want -to understand our own code in a year from now and if we want help from -others. - -Use Doxygen. - -There is a Doxyfile in the admin subdirectory. You can either -run doxygen from there or simply type "make devdocs" from the -top directory of the source tree. -Then take a look at doc/api/html/annotated.html - -Let's also try to document the code we write: the doxygen syntax -is trivial and you can find a 5 minute tutorial by googling. diff --git a/doc/scripting.faq.txt b/doc/scripting.faq.txt deleted file mode 100644 index 5f5b532be..000000000 --- a/doc/scripting.faq.txt +++ /dev/null @@ -1,48 +0,0 @@ -------------------------------------------------------------------------------- -Q: What is a callback (command) ? - -A: A callback is a command or set of commands that is called by KVIrc in - response to an event. It is similar to an event handler; the difference - is that the event handler is usually static, the callback is "created" - at runtime instead. - Consider the command exec (see /help exec); its syntax is as follows: - - exec(<commandline>[,<magicparams>]) - { - <callback> - } - - The <callback> is a list of commands that will be called by KVIrc when - the <commandline> has been executed and the slave process has printed - some data on its stdout. - - -------------------------------------------------------------------------------- -Q: How can i print on a window the result of an external command like nmap - or uname ? - -A: Starting from version 3.0.0 KVIrc supports (again) the /exec command. - The commandline you're looking for might be something similar to: - - exec("uname -a"){ echo $1; }; - - If you want to say the result to a channel you may use say instead of echo - - exec("uname -a"){ say $1; }; - - For nmap you might consider using the -e switch too in order to see - the errors printed on stderr. - - exec -e ("nmap -sS -p 1-1024 somehost"){ say $1; } - - Exec is a really flexible command, it can process the slave output in blocks - or as a whole and can write data to the slave too. See /help exec for - more details. - -------------------------------------------------------------------------------- -Q: KVIrc crashes when I use a commandline like the following: - alias(identify){ identify password; } - -A: This is infinite recursion: a programming error. - Take a look at http://en.wikipedia.org/wiki/Infinite_loop, learn - that once for all and fix your script. diff --git a/doc/themes.howto.txt b/doc/themes.howto.txt deleted file mode 100644 index 417332354..000000000 --- a/doc/themes.howto.txt +++ /dev/null @@ -1,132 +0,0 @@ -Starting from the release 3.0.0 KVIrc supports user interface themeing. - -A KVIrc theme is basically: -- a subset of the options that controls the visual appearance - of the user interface -- a set of icons that override the default ones - -The skeleton for a new theme can be produced by simply saving your current -theme. Open the options dialog and go to the Look & Feel / Theme page. -Click on "Save current theme", enter the description in the dialog that -appears and select "OK". The theme skeleton is now saved in your home -directory.The confirmation dialog -should have told you exactly where: it should be a directory like -$HOME/.config/KVIrc/theme/<yourthemename>-<yourthemeversion>. -Cd to that directory and look around. You should see two configuration *.kvc -files and a lot of *.png images. - -themeinfo.kvc contains the information that the user can see when browsing -the themes in the options dialog. The format of this file should be obvious: -you can edit it manually if you want to make some changes. -(The %20 strings are url-encoded spaces, KVirc will accept also plain spaces). - -themedata.kvc contains the visual settings. It looks more or less like this: - - .... - uintGlobalTransparencyParentFadeFactor=10 - boolObtainGlobalBackgroundFromKde=false - pixmapLabelBackground= - msgtypeMotd=30,1,100,1,1 - fontIrcView=helvetica,10,5,50 - colorIrcToolBarAppletBorder=180,180,180 - boolUseGuiEffectFadeMenu=false - pixmapGlobalTransparencyBackground=pixmapGlobalTransparencyBackground.png - pixmapTreeTaskBarBackground= - iccolor2=0,0,200 - mirccolor13=200,0,200 - .... - -You can *carefully* edit it by hand, if you wish. -Each option starts with a prefix that defines the "type" of that option. - -pixmap: defines an image and thus should contain an image path (see below) - -color: defines a user interface color and is an R,G,B triplet - -font: defines a user interface font: you usually need to change only the - first two values: font family and size. - -msgtype: defines the icon, text color, background color, log level and - alert level of the messages - -uint: is an unsigned integer value - -bool: is a boolean value: true or false - -mirccolor: defines the colors used by the CTRL+K escape and is an - R,G,B triplet like color. - -iccolor: defines the default color of an IRC context and is again an - R,G,B triplet. - -Hints: - - When changing the pixmap entries remember to use filenames - without path. KVIrc will lookup the filenames in the directory - of your theme. - - - The options stringIconThemeSubdir reflects the name of the - directory in which the theme images are stored. - If you change the directory name, you must also change this option. - -The theme directory contains also a set of *.png files. -KVIrc will load these files instead of the default ones shipped in the -distribution. You can modify/replace them, but keep in mind the -following simple rules: - - you can't modify the image size: if you do it, - the images will look bad - - the image format must be *.png: it is the only - format granted to be loaded by all the versions of KVIrc. - -If you don't want to "override" an image (and thus you want to leave -the "default" one) you can delete it from the theme directory. KVIrc will -fallback to the default image shipped in the distribution. - -If you look at the global kvirc installation directory (usually -/usr/local/share/kvirc/version/pics/) you will notice that there are other -images that KVIrc loads. You can override each image by placing your version -with the same name in your theme directory. - -Hints: - - All the small icons have a meaning and a name: - you should reflect it when painting. - This small script will show you the associations between - the icons and their names: - - %i = 0 - do { - %name = $iconname(%i) - echo The icon by id %i is named %name - %i++ - } while(%name != "") - ------------------------------------------------------------------------------- -Review this block, is this applicable in 4.x/5.x? - - - The id's of the icons are just their ZERO_BASED indexes. - The kvi_smallicon_<number>.png files are numbered in increasing - order and contain 16 images each one. kvi_smallicon_00.png - contains images from 0 to 15, kvi_smallicon_01.png contains images - 16 to 31 etc... Thus the third icon in kvi_smallicon_02.png - has id (2*16)+(3)-1 = 34. ------------------------------------------------------------------------------- - - - -What happens when a user installs a theme ------------------------------------------------------------------------------ - -When a user attempts to install a theme from the options dialog, -KVIrc reads the themedata.kvc file and applies all the visual settings. -This is an one-time action: the settings are applied only once from the -themedata.kvc file and then are saved to the user's configuration files. -In this way the user can alter the theme by freely changing the individual -settings. One of the applied options is stringIconThemeSubdir that contains -the directory of the theme images. KVIrc uses this option to lookup the -image files before looking at any other directory. If the image file is found -there, it is loaded and used, otherwise KVIrc falls back to the images -shipped in the distribution. - - -Have fun :) - -Szymon Stefanek diff --git a/doc/translations.howto.txt b/doc/translations.howto.txt deleted file mode 100644 index fe811fdc6..000000000 --- a/doc/translations.howto.txt +++ /dev/null @@ -1,157 +0,0 @@ -This mini-howto describes the procedure for translating KVIrc in a new language. ------------------------------------------------------------------------------------ - -Step 0: Getting the right sources. - -First of all you need the Git version of KVIrc. -To obtain the Git version you can follow the instructions on -http://www.kvirc.net/?id=git - -The translation stuff is in kvirc/po . - - -Step 1: Initialize the build environment - -Enter the directory containing the KVIrc code and follow the doc/INSTALL* -documentation on how to run CMake to generate the needed Makefiles. - - - -Step 2: Finding out your language code - -You must find out the contents of your language code. -Usually this is a string formed of at least two letters and it -can be found by examining the contents of your $LANG shell variable -or by looking at http://translation.sourceforge.net/HTML/teams.html -Examples of such codes are "it", "en", "hu" or "pt_BR" - - - -Step 3: Generating the list of messages to translate - -You must perform this step only if it is the first time that KVIrc is translated -into your language. If you're going to update an existing translation then -you can jump directly to step 4. - -Enter your build directory and run this command to extract the messages from the -sources: - -# make messages-extract - -A series of .pot files will be created in the subdirs of build_directory/po/ -Each file refers to a specific component of KVIrc: eg. the main translation file -is located in build_directory/po/core/kvirc/kvirc.pot -Create a copy for each of these files named kvirc_xxx.po where xxx is your -language code found in step 2. - -# cd po/core/kvirc -# cp kvirc.pot kvirc_xxx.po -# cd ../kvs -# cp kvs.pot kvs_xxx.po -# cd ../../modules/about -# cp about.pot about_xxx.po -# cd ../modules/addon -# cp addon.pot addon_xxx.po - -and so on for all the other modules; you are not forced to translate all the -files at once, but creating the files skeleton for all components is recommended. - - - -Step 4: Translating the messages - -If you just followed step 3 then you have just created the *_xxx.po (eg. -kvirc_it.po) files where xxx stands for your language code (found in step 2). -If you jumped directly here from 2 then you need to find the existing -*_xxx.po files in the kvirc/po subdirectories. -If no such files exist for your locale, you probably missed to create them in -step 3. - -You can translate *.po files using a simple text editor (that _have_ to support -the UTF-8 encoding), but it's strongly advised that you use a translation software -such as lokalize for Linux/KDE or poedit for Windows. - -Note on the format of the translation files: -The *.po files contains a set of strings like the following one: - -#: /path/to/the/file/which/contains/the/string: line number -msgid "The original English message" -msgstr "The translation goes here" - -The msgid is the original message that needs to be translated -and msgstr is the translation (that will be initially empty, when -the kvirc_xxx.po file is created). - -The msgid can contain html tags, escapes like "\n" and format strings -like "%s". You MUST match the tags, escapes and format specs in the msgstr -strings. Keep special attention to the format specifications (%s, %W, -%Q...).. -They must remain EXACTLY the same order as in the msgid: exchanging the -order or writing a wrong format spec will lead to crashes sooner or later. - - - -Step 5: Adding the translation to the install system - -Once you have translated some strings you can try to run the translation in -KVIrc. If you are updating an existing translation then you can jump -directly to step 6. - -You need to force the build system to pick up your newly created translation -files and compile it. This is again an one time step. You'll just need to -clean your CMakeCache.txt (located in your build directory) and re-run CMake -again for it to pick up the new translation file, then build KVIrc as usual. -When it has finished building, move to the next step. - - - -Step 6: Trying the translation - -Run make and wait until it finishes. -Ensure the $LANG environment variable is set to the correct locale, and run -KVIrc - -# export LANG="xxx" -# kvirc - -KVirc should then pick up your translation file and use it. - - - -Step 7: Updating the translation when the sources change - -In the process of KVIrc development, new message strings gets added inside the -source files, while some others can change or even get removed. -When you do a Git update to obtain the latest sources you should then enter your -build directory and run: - -# make messages-update - -This procedure will update your *_xxx.po files with the new messages and mark the -old messages as either fuzzy or invalid. -The invalid entries must be re-translated completely again while the fuzzy entries -have minor changes and can be probably adjusted in few seconds. - - - -Misc notes: - - -If you're in doubt about some translation, you could take a look at how -similar sentences have been translated in the KDE *.po files, or in other -software. If you need some further help, contact us on our mailing list or on -irc (irc://irc.freenode.net/#KVIrc). - -Since many of the modules have their own translation files then -the procedure above may be repeated for the po/modules/*/ subdirectories. -Anyway you are not forced to translate all the files at once: a partial -translation will work anyway. - -When you're satisfied with your translation you may send your pull request for the -*.po files to KVIrc Github project https://github.com/kvirc/KVIrc or send the *.po -to the KVIrc mailing list asking for inclusion in Git. If you want to maintain the -translation in the future then you may also apply for a Github account. - - -Happy translating :) -Szymon Stefanek diff --git a/doc/translations.spanish.notes.txt b/doc/translations.spanish.notes.txt deleted file mode 100644 index 1acc70b42..000000000 --- a/doc/translations.spanish.notes.txt +++ /dev/null @@ -1,135 +0,0 @@ -Notes for Spanish translators - wodim - August 18 2011 -=============================================================================== - -This is a list of notes for myself and for the possible future Spanish - translators and therefore it's written in Spanish. Sorry. - -------------------------------------------------------------------------------- - - Normas generales - ---------------- - -- Aunque por lo general es preferible usar un tono cercano, se debe usar «usted» - en lugar de «tú» ya que ésta es la única manera de poder tener una traducción - neutral para los países «voseantes» (Argentina, ...). -- La mayoría de las frases de los títulos de ventana, botones, etc está en el - estilo de mayúsculas llamado «título», muy usado en inglés: - Theme Settings - New Connection to - Tip of the Day - Puede parecer tentador, pero esto *jamás* debe traducirse como tal al español. - Ha de pasarse todo a minúsculas. La traducción correcta sería: - Opciones del tema - Nueva conexión a - Consejo del día -- Evitar el pretérito simple compuesto, su uso da problemas de - internacionalización y alargará la traducción inútilmente: - (MAL) La conexión ha fallado - (BIEN) La conexión falló -- Evitar usar el gerundio: - (ORIGINAL) Error connecting to the server - (MAL) Error conectando al servidor - (BIEN) Error al conectar al servidor -- Muchos mensajes de error de KVIrc están escritos en primera persona, éstos han - de ser pasados a la tercera persona a la hora de traducir: - (ORIGINAL) I couldn't connect - (MAL) No pude conectar - (BIEN) No se puede conectar - (BIEN) Error al conectar -- Por lo general los anglicismos y palabras técnicas no han de ser traducidas. -- Las palabras «zombie» jamás han de usarse: - (MAL) Checar, salvar, accesar, resetear - (BIEN) Comprobar, guardar, acceder, reiniciar -- Ciertos términos son ofensivos en algunos países y han de ser evitados: - (MAL) Abortar, coger, correr - (BIEN) Cancelar, elegir, ejecutar -- «Por favor» se omite. -- Es muy importante mantener las mayúsculas en los acrónimos o sustantivos - propios: - (MAL) Dbus, Kvirc, Ssl - (BIEN) DBus, KVIrc, SSL -- Los nombres de los días de la semana, de los meses y de los idiomas no van en - mayúscula en español, en inglés sí. Hay que vigilar esto a la hora de - traducir: - (ORIGINAL) Today, August 13, I'm learning English. - (MAL) Hoy, 13 de Agosto, estoy aprendiendo Inglés. - (BIEN) Hoy, 13 de agosto, estoy aprendiendo inglés. -- Normalmente la traducción se ha de adherir lo máximo posible al original en - inglés, pero si una frase suena «rara», debe ser formulada con otras palabras. -- Al detectar un error gramatical u ortográfico en el texto original en inglés, - es muy conveniente dar aviso de ello para que éste pueda ser arreglado. - - Nomenclatura - ------------ - -- Ban: ban. No se traduce, la única traducción posible es «prohibición» y suena - muy mal, aparte no parece tener sentido en el contexto. -- Lag: lag. Tampoco se traduce, «retraso» tiene connotaciones negativas en - castellano. -- Gender: sexo, nunca «género». -- Click: clic, jamás «click». -- OK: Aceptar, nunca «OK». -- Nickname: nick, nunca «nombre» ni nada similar. No se debe usar «alias» para - evitar confusiones con el sistema de scripting. -- Machine, host: equipo. Nunca «máquina» o «PC»; jamás «ordenador». -- Notice: notice. No se traduce. Jamás «noticia». -- Query: privado, en caso de verbo: - (ORIGINAL) Query %s - (ESPAÑOL) Abrir privado a %s -- Join: entrar. Nunca «unirse»: - (ORIGINAL) Join Channels... - (ESPAÑOL) Entrar en canales... - (ESPAÑOL) Entrar a canales... - También: - (ORIGINAL) %s has joined %s - (BIEN) %s entró a %s - (MAL) %s se ha unido a %s - En este último ejemplo incluso se ha evitado el uso inútil de un verbo - pronominal. -- Part, left: salir. Nunca «abandonar»: - (ORIGINAL) %s has left %s: %s - (ESPAÑOL) %s salió de %s: %s - También: - (ORIGINAL) Part message - (ESPAÑOL) Mensaje de salida de canal -- Quit: salir del IRC. Debe quedar claro que se sale del IRC en sí, es decir, - que se desconecta totalmente del servidor, para evitar confusiones con las - salidas de canal, que no suponen desconexión (dicho nick ya no es visible - para el usuario en el canal pero sigue estando conectado, posiblemente en - otros canales): - (ORIGINAL) %s has quit: %s - (BIEN) %s salió del IRC: %s - (MAL) %s salió: %s - También: - (ORIGINAL) Quit message - (ESPAÑOL) Mensaje de salida del IRC -- Wallop: no se traduce. Es un acrónimo; significa «Warning ALL OPerators». -- Ircop: no se traduce. Es un acrónimo; significa «IRC OPerator». -- Kick: expulsar, expulsión, etc. Nunca «kickear», jamás «patear»; «expulsar» - es perfectamente inteligible y no colisiona con otros conceptos. -- Quiet: silencio, silenciado, etc. -- Away: ausente, ausencia, etc. El concepto es «estado ausente», por ejemplo, - «abandonado el estado ausente», «entrando en estado ausente», «ponerse - ausente», o incluso «ausentarse». -- Back: volver, regresar. -- User-Friendly Command Line: modo amigable de la línea de comandos. Forma - corta: «modo amigable». -- Op: dar op. Jamás «opear». -- Deop: quitar op. Jamás «deopear» o «desopear». -- Voice: voz, (verbo) dar voz. Jamás «voicear», y ni muchisímo menos «vocear». -- Devoice: ditto. -- Choose: elegir. Evitar «escoger». -- Aliases: alias. Jamás «aliases», ésta es una palabra de plural invariable. -- Ignore: ignorar, usuario ignorado: - (ORIGINAL) Ignore %s - (ESPAÑOL) Ignorar a %s - También: - (ORIGINAL) Ignore List - (ESPAÑOL) Lista de ignorados -- Verbose: detallado, detalle. Jamás «verboso», aun existiendo esa palabra es un - tecnicismo y como tal debe ser evitada: - (ORIGINAL) Verbose output - (ESPAÑOL) Salida detallada - También: - (ORIGINAL) Verbosity level - (ESPAÑOL) Nivel de detalle diff --git a/doc/ui-style.tips.txt b/doc/ui-style.tips.txt deleted file mode 100644 index 2da01c80f..000000000 --- a/doc/ui-style.tips.txt +++ /dev/null @@ -1,67 +0,0 @@ -## KVIrc Style Tips and Guidelines - -### Guidelines -** When in doubt or in cases not covered below please consult the guidelines outlined in this section. - -- For capitalization guidelines see: https://techbase.kde.org/Projects/Usability/HIG/Capitalization -- For tooltip guidelines see: https://techbase.kde.org/Projects/Usability/HIG/Tooltip -- For usability and style guidelines see: https://techbase.kde.org/Projects/Usability/HIG - -Note: We refer to the KDE guidelines, this is mostly out of convenience (because writing our own takes time). - - -### Dialog Windows -- Titles should follow the capitalization guidelines above e.g. *Choose a Script File*, not *Choose a script file*. -- For any non-modal dialogs (config dialogs, etc.), the name should have * - KVIrc* at the end. - e.g. User Registration Wizard - KVIrc - This also applies to wizards and file selection dialogs. -- Define a title text that reflects the dialog type / message being conveyed, avoid vague titles. - -### Menu Bars -- Menus have specific locations in menu bars, see the style guide above **. - - -### Menus -- Menu item(s) test should follow the capitalization guidelines above e.g. *An Item*, not *An item*. -- Common items are: - Cu&t - &Copy - &Paste - Clear - &Open... - &Save As... - -- Items that open a dialog or otherwise require confirmation or additional - information should have ellipses (...) immediately following their text with no spaces. - - -### Selector Widgets -- Bool selector labels should follow the capitalization guidelines above ** e.g. *Enable debug output*. -- String/file path/integer selectors should have labels with a colon ":" appended at the end, e.g. *Comment:*. -- QGroupBox text header should follow the capitalization guidelines above ** e.g. *Use Filtering For*. -- Config selector tooltips sentences should terminate with a fullstop (period). - Use formatting like <br> except for separating sections. - - -### Buttons -- Button text should also follow the capitalization guidelines above ** e.g. *A Button*, not *A button*. -- Common labels are: - &OK - &Apply - Cancel - &New - &Add... - Re&move - &Close - &Browse... - -- Button QToolTips should be a description of its function, and end with a fullstop (period) like: - Accept all changes, and close this dialog. - Kill the current user. (use singular tense verb i.e. *Kill*, not *Kills*) - -- If the button has no text (i.e. KVIrc's existing server dialog), the tooltip should be the *Label text* - however tooltip should follow the capitalization guidelines above **. -- Tooltips that contain a header label, can contain <center><center> formatting, try to be consistent with the current style of similar dialogs. -- Tooltips main text should be always left aligned, make use of newlines (/n) or line breaks (<br>) type formatting to improve sentence flow. -- Buttons are best placed in a QHBox. -- Try to keep button names short and concise. diff --git a/doc/win32_run_cmake.bat b/doc/win32_run_cmake.bat deleted file mode 100644 index 4a4e7451e..000000000 --- a/doc/win32_run_cmake.bat +++ /dev/null @@ -1,53 +0,0 @@ -@echo OFF
-
-REM =======================================================================
-REM Windows cmake launch helper script.
-REM See INSTALL-Win32.txt for more information about this file.
-REM =======================================================================
-
-REM =======================================================================
-REM INSTALLATION PATHS
-REM =======================================================================
-
-set QTPATH=C:\Qt\2010.05
-
-set MINGWPATH=C:\Qt\2010.05\mingw
-
-set CMAKEPATH=C:\Program Files\CMake 2.8
-
-set PYTHONPATH=C:\Python26
-
-set PERLPATH=C:\Perl
-
-set SUBVERSIONPATH=C:\Program Files\Subversion
-
-set ZLIBPATH=C:\Program Files\GnuWin32
-
-set OPENSSLPATH=C:\OpenSSL
-
-set GETTEXTPATH=C:\Program Files\GnuWin32
-
-set SEDPATH=C:\Program Files\GnuWin32
-
-
-REM =======================================================================
-REM REAL WORKS BEGIN HERE
-REM =======================================================================
-
-set PATH=%QTPATH%\qt\bin;%QTPATH%\bin
-set PATH=%PATH%;%MINGWPATH%\bin
-set PATH=%PATH%;%CMAKEPATH%\bin
-set PATH=%PATH%;%CMAKEPATH%\bin
-set PATH=%PATH%;%PERLPATH%\bin;%PERLPATH%\site\bin
-set PATH=%PATH%;%PYTHONPATH%
-set PATH=%PATH%;%SUBVERSIONPATH%\bin
-set PATH=%PATH%;%GETTEXTPATH%\bin
-set PATH=%PATH%;%SEDPATH%\bin
-set PATH=%PATH%;C:\Windows\System32
-
-SET CMAKE_INCLUDE_PATH=%CMAKE_INCLUDE_DIR%;%OPENSSLPATH%\include;%ZLIBPATH%\include
-SET CMAKE_LIBRARY_PATH=%CMAKE_LIB_DIR%;%OPENSSLPATH%\lib;%OPENSSLPATH%\lib\mingw;%ZLIBPATH%\lib
-
-REM The windows command prompt is hopeless...
-
-cmake.exe -G "MinGW Makefiles" ..
|
