Created SILC Runtime Toolkit git repository Part I.
[runtime.git] / apps / irssi / docs / design.txt
diff --git a/apps/irssi/docs/design.txt b/apps/irssi/docs/design.txt
deleted file mode 100644 (file)
index 5c8ddcf..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-
- Irssi's hierarchy is something like this:
-
-
-         sub1 sub2
-            \ /
-       xxx  IRC       COMMON ICQ  yyy
-        |____|___________|____|____|
-                   |
-                  GUI (gtk/gnome, qt/kde, text, none)
-                   |
-         sub1 sub2 |
-            \ /    |
-       xxx  IRC    |  COMMON ICQ  yyy
-        |____|_____|_____|____|____|
-                   |
-               COMMON UI
-                   |
-         sub1 sub2 |
-            \ /    |
-       xxx  IRC    |    ICQ  yyy
-        |____|_____|_____|____|
-                   |
-                 CORE
-                 /  \
-        lib-config  lib-popt
-
-
- (IRC, ICQ, xxx and yyy are chat protocols ..)
- (sub1 and sub2 are submodules of IRC module, like DCC and flood protect)
-
-
- Chat protocols and frontends are kept in separate modules. Common UI
- and GUI modules also have the common parts which don't know anything
- about the chat protocols. This should allow implementing modules to
- whatever chat protocols and with whatever frontends easily.
-
- ** Signals
-
- Communication between different modules are done with "signals". They are
- not related to UNIX signals in any way, you could more like think of them
- as "events" - which might be a better name for them, but I don't really
- want to change it anymore :)
-
- So, you send signal with signal_emit() and it's sent to all modules that
- have grabbed it by calling signal_add() in their init function. For
- example:
-
-   signal_emit("mysignal", 1, "hello");
-
- Sends a "mysignal" function with one argument "hello" - before that, you
- should have grabbed the signal somewhere else with:
-
-   static void sig_mysignal(const char *arg1)
-   {
-     /* arg1 contains "hello" */
-   }
-
-   signal_add("mysignal", (SIGNAL_FUNC) sig_mysignal);
-
- There are three different signal_add() functions which you can use to
- specify if you want to grab the signal first, "normally" or last. You can
- also stop the signal from going any further.
-
- Emitting signal with it's name creates a small overhead since it has to
- look up the signal's numeric ID first, after which it looks up the signal
- structure. This is done because if you call a signal _really_ often,
- it's faster to find it with it's numeric ID instead of the string. You
- can use signal_get_uniq_id() macro to convert the signal name into ID -
- you'll have to do this only once! - and use signal_emit_id() to emit the
- signal. Don't bother to do this unless your signal is sent (or could be
- sent) several times in a second.
-
- See src/core/signals.h for defination of the signal function, and
- signals.txt for a list of signals.
-
-
- ** lib-popt
-
-   CORE depends on this for command line parameter handling.
-   (distributed with irssi)
-
-
- ** lib-config
-
-   Irssi depends on this for reading and saving configuration.
-   (created by me for irssi)
-
-
- ** CORE module
-
- Provides some functionality that all other modules can use:
-   - signal handling
-   - keeping list of settings
-   - keeping list of /commands
-   - keeping track of loaded modules
-   - networking functions (with nonblocking connects, IPv6 support)
-   - handles connecting to servers
-   - raw logging of server's input/output data
-   - /EVAL support
-   - fgets() like function line_split() without any maximum line limits
-   - command line parameter handling
-   - miscellaneous useful little functions
-   - handles logging
-
-
- ** COMMON UI module
-
-   - knows basics about windows and window items (=channels, queries, ..)
-   - printtext() - parsing texts and feeding it for GUI to print.
-   - themes
-   - translation tables
-   - text hilighting
-   - command history
-   - user interface (/commands) for CORE's functionality
-
-
- ** GUI modules
-
-   - all the rest of the functionality needed for a working client.
-
-
- ** IRC module
-
-   * CORE
-
-     - IRC specific /commands
-     - flood protecting commands sent to server
-     - creating IRC masks based on nick/address for bans, ignores, etc.
-     - keeps list of channels, nicks, channel modes, bans, etc.
-     - keeps list of servers, server settings, irc networks,
-       server reconnections and irc network splits
-     - redirection of commands' replies
-     - lag detection
-     - ctcp support and flood protection
-     - Handles ignoring people
-
-   * DCC
-
-     - DCC chat, send and get
-
-   * FLOOD
-
-     - detects private or channel flooding and sends "flood" signal
-     - automatic ignoring when flooding
-
-   * NOTIFYLIST
-
-     - handles notifylist
-
-
- ** IRC UI module
-
-   - placing channels and queries in windows
-   - nick completion
-   - printing infomation of some events