diff options
author | Timo Sirainen <cras@irssi.org> | 2000-04-26 08:11:21 +0000 |
---|---|---|
committer | cras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2000-04-26 08:11:21 +0000 |
commit | 94b37a898bd306c66ef3cc7b98832f983532cbac (patch) | |
tree | 76205495b9ee0e88431f5819b9258655d035fa02 /docs/design.txt | |
parent | d29ca0b107a5b6abb4eadd036f37acd33bb72ed0 (diff) | |
download | irssi-94b37a898bd306c66ef3cc7b98832f983532cbac.zip |
and the docs
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@173 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'docs/design.txt')
-rw-r--r-- | docs/design.txt | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/docs/design.txt b/docs/design.txt new file mode 100644 index 00000000..66790b6a --- /dev/null +++ b/docs/design.txt @@ -0,0 +1,117 @@ + + 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. + + + ** 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 |