[Tkabber-dev] r1242 - in trunk/tkabber: . doc jabberlib-tclxml tclxml

tkabber-svn at jabber.ru tkabber-svn at jabber.ru
Fri Oct 5 23:37:56 MSD 2007


Author: sergei
Date: 2007-10-05 23:37:56 +0400 (Fri, 05 Oct 2007)
New Revision: 1242

Added:
   trunk/tkabber/tclxml/
Removed:
   trunk/tkabber/jabberlib-tclxml/tclxml/
Modified:
   trunk/tkabber/ChangeLog
   trunk/tkabber/README
   trunk/tkabber/doc/tkabber.html
   trunk/tkabber/doc/tkabber.xml
   trunk/tkabber/jabberlib-tclxml/jabberlib.tcl
   trunk/tkabber/jabberlib-tclxml/jlibcompress.tcl
   trunk/tkabber/jabberlib-tclxml/jlibsasl.tcl
   trunk/tkabber/jabberlib-tclxml/jlibtls.tcl
   trunk/tkabber/jabberlib-tclxml/pkgIndex.tcl
   trunk/tkabber/jabberlib-tclxml/transports.tcl
   trunk/tkabber/jabberlib-tclxml/wrapper.tcl
   trunk/tkabber/login.tcl
   trunk/tkabber/tclxml/xml__tcl.tcl
Log:
	* jabberlib-tclxml/jabberlib.tcl, doc/tkabber.xml: Removed keep-alive
	  periodic sending of space character to a server. XMPP Ping support
	  does this job much better (at cost of bigger traffic though).

	* jabberlib-tclxml/jabberlib.tcl, jabberlib-tclxml/transports.tcl,
	  jabberlib-tclxml/jlibsasl.tcl, jabberlib-tclxml/jlibtls.tcl,
	  jabberlib-tclxml/jlibcompress.tcl: Moved starting and finishing
	  stream to transports. Eventually it will allow to impolement unusual
	  stream start and finish (e.g. in BOSH, XEP-0124).

	* login.tcl: Increased default polling intervals. Moved to more
	  neutral options -httpurl, -httpusekeys, -httpnumkeys (they will be
	  used not only in HTTP polling).

	* jabberlib-tclxml/transports.tcl: Code cleanup, use separate
	  variables for different connections instead of a single array.

	* jabberlib-tclxml/tclxml: Moved to tkabber root directory.

	* jabberlib-tclxml/jabberlib.tcl, jabberlib-tclxml/wrapper.tcl,
	  tclxml/xml__tcl.tcl: Added -namespace option to xml::parser and made
	  possible to use tDOM as an XML parser. (tDOM parser is sensitive to
	  unbound XML namespaces though, so to enable it use variable
	  use_external_tclxml and set it to 1.)

	* doc/tkabber.html, doc/tkabber.xml, README: Added main changes in
	  0.10.1.


Modified: trunk/tkabber/ChangeLog
===================================================================
--- trunk/tkabber/ChangeLog	2007-10-05 17:25:18 UTC (rev 1241)
+++ trunk/tkabber/ChangeLog	2007-10-05 19:37:56 UTC (rev 1242)
@@ -1,3 +1,33 @@
+2007-10-05  Sergei Golovan  <sgolovan at nes.ru>
+
+	* jabberlib-tclxml/jabberlib.tcl, doc/tkabber.xml: Removed keep-alive
+	  periodic sending of space character to a server. XMPP Ping support
+	  does this job much better (at cost of bigger traffic though).
+
+	* jabberlib-tclxml/jabberlib.tcl, jabberlib-tclxml/transports.tcl,
+	  jabberlib-tclxml/jlibsasl.tcl, jabberlib-tclxml/jlibtls.tcl,
+	  jabberlib-tclxml/jlibcompress.tcl: Moved starting and finishing
+	  stream to transports. Eventually it will allow to impolement unusual
+	  stream start and finish (e.g. in BOSH, XEP-0124).
+
+	* login.tcl: Increased default polling intervals. Moved to more
+	  neutral options -httpurl, -httpusekeys, -httpnumkeys (they will be
+	  used not only in HTTP polling).
+
+	* jabberlib-tclxml/transports.tcl: Code cleanup, use separate
+	  variables for different connections instead of a single array.
+
+	* jabberlib-tclxml/tclxml: Moved to tkabber root directory.
+
+	* jabberlib-tclxml/jabberlib.tcl, jabberlib-tclxml/wrapper.tcl,
+	  tclxml/xml__tcl.tcl: Added -namespace option to xml::parser and made
+	  possible to use tDOM as an XML parser. (tDOM parser is sensitive to
+	  unbound XML namespaces though, so to enable it use variable
+	  use_external_tclxml and set it to 1.)
+
+	* doc/tkabber.html, doc/tkabber.xml, README: Added main changes in
+	  0.10.1.
+
 2007-09-25  Sergei Golovan  <sgolovan at nes.ru>
 
 	* plugins/richtext/emoticons.tcl: Ignore empty text as an emoticon

Modified: trunk/tkabber/README
===================================================================
--- trunk/tkabber/README	2007-10-05 17:25:18 UTC (rev 1241)
+++ trunk/tkabber/README	2007-10-05 19:37:56 UTC (rev 1242)
@@ -12,7 +12,7 @@
                                                             January 2007
 
 
-                            Tkabber v0.10.0
+                            Tkabber v0.10.1
 
 
 Abstract
@@ -54,7 +54,7 @@
 
 Shchepin, et al.                                                [Page 1]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 Table of Contents
@@ -64,27 +64,26 @@
    3.  Download, install and run  . . . . . . . . . . . . . . . . . . 10
    4.  Upgrading  . . . . . . . . . . . . . . . . . . . . . . . . . . 12
    5.  Configuration  . . . . . . . . . . . . . . . . . . . . . . . . 13
-     5.1.  Pre-load . . . . . . . . . . . . . . . . . . . . . . . . . 14
+     5.1.  Pre-load . . . . . . . . . . . . . . . . . . . . . . . . . 15
        5.1.1.  Tabbed Interface . . . . . . . . . . . . . . . . . . . 16
        5.1.2.  Fonts and colors . . . . . . . . . . . . . . . . . . . 16
        5.1.3.  Cryptography by default  . . . . . . . . . . . . . . . 18
        5.1.4.  Using of external TclXML library . . . . . . . . . . . 18
        5.1.5.  Debugging Output . . . . . . . . . . . . . . . . . . . 18
        5.1.6.  Splash window  . . . . . . . . . . . . . . . . . . . . 19
-       5.1.7.  Periodically send empty string to server . . . . . . . 19
-       5.1.8.  I18n/L10n  . . . . . . . . . . . . . . . . . . . . . . 19
-       5.1.9.  Searching  . . . . . . . . . . . . . . . . . . . . . . 19
-     5.2.  Post-load  . . . . . . . . . . . . . . . . . . . . . . . . 20
+       5.1.7.  I18n/L10n  . . . . . . . . . . . . . . . . . . . . . . 19
+       5.1.8.  Searching  . . . . . . . . . . . . . . . . . . . . . . 19
+     5.2.  Post-load  . . . . . . . . . . . . . . . . . . . . . . . . 19
        5.2.1.  Look-and-Feel  . . . . . . . . . . . . . . . . . . . . 23
        5.2.2.  The Autoaway Module  . . . . . . . . . . . . . . . . . 24
-       5.2.3.  The Avatar Module  . . . . . . . . . . . . . . . . . . 25
+       5.2.3.  The Avatar Module  . . . . . . . . . . . . . . . . . . 24
        5.2.4.  The Chat Module  . . . . . . . . . . . . . . . . . . . 25
        5.2.5.  The Clientinfo Module  . . . . . . . . . . . . . . . . 25
        5.2.6.  The Conferenceinfo Module  . . . . . . . . . . . . . . 25
        5.2.7.  The Cryptographic Module . . . . . . . . . . . . . . . 26
        5.2.8.  The Emoticons Module . . . . . . . . . . . . . . . . . 26
        5.2.9.  The File Transfer Module . . . . . . . . . . . . . . . 26
-       5.2.10. The Groupchat Module . . . . . . . . . . . . . . . . . 27
+       5.2.10. The Groupchat Module . . . . . . . . . . . . . . . . . 26
        5.2.11. The Ispell Module  . . . . . . . . . . . . . . . . . . 27
        5.2.12. The Stream Initiation Module . . . . . . . . . . . . . 28
        5.2.13. The Logger Module  . . . . . . . . . . . . . . . . . . 28
@@ -105,31 +104,32 @@
    6.  Extensibility  . . . . . . . . . . . . . . . . . . . . . . . . 36
      6.1.  Chat Hooks . . . . . . . . . . . . . . . . . . . . . . . . 37
      6.2.  Login Hooks  . . . . . . . . . . . . . . . . . . . . . . . 39
+     6.3.  Presence Hooks . . . . . . . . . . . . . . . . . . . . . . 39
 
 
 
 Shchepin, et al.                                                [Page 2]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
-     6.3.  Presence Hooks . . . . . . . . . . . . . . . . . . . . . . 39
      6.4.  Roster Hooks . . . . . . . . . . . . . . . . . . . . . . . 40
      6.5.  Miscellaneous Hooks  . . . . . . . . . . . . . . . . . . . 41
    7.  User Interface basics  . . . . . . . . . . . . . . . . . . . . 42
      7.1.  Searching  . . . . . . . . . . . . . . . . . . . . . . . . 42
    Appendix A.  Releases History  . . . . . . . . . . . . . . . . . . 44
-     A.1.  Main changes in 0.10.0 . . . . . . . . . . . . . . . . . . 44
-     A.2.  Main changes in 0.9.9  . . . . . . . . . . . . . . . . . . 45
-     A.3.  Main changes in 0.9.8  . . . . . . . . . . . . . . . . . . 45
-     A.4.  Main changes in 0.9.7beta  . . . . . . . . . . . . . . . . 45
-     A.5.  Main changes in 0.9.6beta  . . . . . . . . . . . . . . . . 46
-     A.6.  Main changes in 0.9.5beta  . . . . . . . . . . . . . . . . 46
-   Appendix B.  Tk option database resources  . . . . . . . . . . . . 47
-   Appendix C.  Documentation TODO  . . . . . . . . . . . . . . . . . 51
-   Appendix D.  Acknowledgements  . . . . . . . . . . . . . . . . . . 52
-   Appendix E.  Copyrights  . . . . . . . . . . . . . . . . . . . . . 53
-   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 54
+     A.1.  Main changes in 0.10.1 . . . . . . . . . . . . . . . . . . 44
+     A.2.  Main changes in 0.10.0 . . . . . . . . . . . . . . . . . . 44
+     A.3.  Main changes in 0.9.9  . . . . . . . . . . . . . . . . . . 45
+     A.4.  Main changes in 0.9.8  . . . . . . . . . . . . . . . . . . 45
+     A.5.  Main changes in 0.9.7beta  . . . . . . . . . . . . . . . . 46
+     A.6.  Main changes in 0.9.6beta  . . . . . . . . . . . . . . . . 46
+     A.7.  Main changes in 0.9.5beta  . . . . . . . . . . . . . . . . 47
+   Appendix B.  Tk option database resources  . . . . . . . . . . . . 48
+   Appendix C.  Documentation TODO  . . . . . . . . . . . . . . . . . 52
+   Appendix D.  Acknowledgements  . . . . . . . . . . . . . . . . . . 53
+   Appendix E.  Copyrights  . . . . . . . . . . . . . . . . . . . . . 54
+   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 55
 
 
 
@@ -166,7 +166,7 @@
 
 Shchepin, et al.                                                [Page 3]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 1.  Features
@@ -222,7 +222,7 @@
 
 Shchepin, et al.                                                [Page 4]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
       *  file transfers (HTTP, SOCKS bytestream, DTCP and IBB
@@ -278,7 +278,7 @@
 
 Shchepin, et al.                                                [Page 5]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
       *  for Unix: auto-away, spell checking, KDE or freedesktop
@@ -334,7 +334,7 @@
 
 Shchepin, et al.                                                [Page 6]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 2.  Requirements
@@ -390,7 +390,7 @@
 
 Shchepin, et al.                                                [Page 7]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    o  Another option in Unix is to compress connection between client
@@ -446,7 +446,7 @@
 
 Shchepin, et al.                                                [Page 8]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    Please keep in mind that these are all "optional extras" -- if
@@ -502,7 +502,7 @@
 
 Shchepin, et al.                                                [Page 9]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 3.  Download, install and run
@@ -558,7 +558,7 @@
 
 Shchepin, et al.                                               [Page 10]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    If you're a Tcl/Tk guru and have installed _tkcon_, then you may want
@@ -614,7 +614,7 @@
 
 Shchepin, et al.                                               [Page 11]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 4.  Upgrading
@@ -670,7 +670,7 @@
 
 Shchepin, et al.                                               [Page 12]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 5.  Configuration
@@ -726,7 +726,7 @@
 
 Shchepin, et al.                                               [Page 13]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    o  in the post-load stage, configuration options for each module are
@@ -740,7 +740,6 @@
 
    Let's look at each, in turn.
 
-5.1.  Pre-load
 
 
 
@@ -780,11 +779,14 @@
 
 
 
+
 Shchepin, et al.                                               [Page 14]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
+5.1.  Pre-load
+
    There are a few things that you may let _Tkabber_ know immediately.
    These are:
 
@@ -824,21 +826,19 @@
    set show_splash_window 0
 
 
-   # periodically send empty string to server
+   # force english labels instead of native language
 
-   set keep_alive           0
-   set keep_alive_interval 10
+   ::msgcat::mclocale en
 
 
-   # force english labels instead of native language
 
-   ::msgcat::mclocale en
 
 
 
+
 Shchepin, et al.                                               [Page 15]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 5.1.1.  Tabbed Interface
@@ -894,7 +894,7 @@
 
 Shchepin, et al.                                               [Page 16]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    Probably the most commonly used way to configure _Tkabber_'s visual
@@ -950,7 +950,7 @@
 
 Shchepin, et al.                                               [Page 17]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    configuration files (i.e. not using _XRDB_ directly) you are not
@@ -1006,7 +1006,7 @@
 
 Shchepin, et al.                                               [Page 18]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    Most users won't care about "debugmsg" because they're running
@@ -1025,18 +1025,8 @@
 
    set show_splash_window 0
 
-5.1.7.  Periodically send empty string to server
+5.1.7.  I18n/L10n
 
-   If you're using a proxy to talk to a Jabber server, after a period of
-   inactivity, the proxy may decide to disconnect you.  To avoid this,
-   you can tell _Tkabber_ to send an empty string to the server every
-   _keep_alive_interval_ minutes:
-
-   set keep_alive 1
-   set keep_alive_interval 10
-
-5.1.8.  I18n/L10n
-
    _Tkabber_ can show all messages in user's native language.  This is
    done by using Tcl's built-in _msgcat_ package which looks for a
    directory called "msgs/" wherever you installed _Tkabber_, and then
@@ -1047,7 +1037,7 @@
 
    ::msgcat::mclocale en
 
-5.1.9.  Searching
+5.1.8.  Searching
 
    _Tkabber_ allows the user to perform textual searching in certain
    classes of its windows.  This searching is controlled by several
@@ -1055,16 +1045,6 @@
 
    These settings are described in detail here (Section 7.1).
 
-
-
-
-
-
-Shchepin, et al.                                               [Page 19]
-
-                             Tkabber v0.10.0                January 2007
-
-
 5.2.  Post-load
 
    After _Tkabber_ reads your configuration file, it loads all of its
@@ -1078,6 +1058,13 @@
    proc postload {} {
    # look-and-feel
 
+
+
+Shchepin, et al.                                               [Page 19]
+
+                             Tkabber v0.10.1                January 2007
+
+
        set pixmaps::options(pixmaps_theme) Default
 
        global alert colors alert_lvls
@@ -1114,13 +1101,6 @@
 
    # the clientinfo module
 
-
-
-Shchepin, et al.                                               [Page 20]
-
-                             Tkabber v0.10.0                January 2007
-
-
        set plugins::clientinfo::options(autoask) 0
 
 
@@ -1133,6 +1113,14 @@
 
    # the cryptographic module
 
+
+
+
+Shchepin, et al.                                               [Page 20]
+
+                             Tkabber v0.10.1                January 2007
+
+
        set ssj::options(encrypt,fred at example.com) 1
 
 
@@ -1171,12 +1159,6 @@
        set si::transport(allowed,http://jabber.org/protocol/ibb) 1
 
 
-
-Shchepin, et al.                                               [Page 21]
-
-                             Tkabber v0.10.0                January 2007
-
-
    # the logger module
 
        set logger::options(logdir)        [file join $::configdir logs]
@@ -1188,6 +1170,13 @@
 
        global loginconf loginconf1 loginconf2 autologin
 
+
+
+Shchepin, et al.                                               [Page 21]
+
+                             Tkabber v0.10.1                January 2007
+
+
        set loginconf(user)           ""
        set loginconf(password)       ""
        set loginconf(server)         example.com
@@ -1227,12 +1216,6 @@
        set message::options(headlines,multiple) 1
 
 
-
-Shchepin, et al.                                               [Page 22]
-
-                             Tkabber v0.10.0                January 2007
-
-
    # the raw xml input module
 
        set plugins::rawxml::set options(pretty_print) 0
@@ -1242,6 +1225,14 @@
    # the roster module
 
        set roster::show_only_online            1
+
+
+
+Shchepin, et al.                                               [Page 22]
+
+                             Tkabber v0.10.1                January 2007
+
+
        set roster::roster(collapsed,RSS)       1
        set roster::roster(collapsed,Undefined) 1
 
@@ -1281,14 +1272,6 @@
 
    If you want, you can have _Tkabber_ use a different theme by putting
    custom theme subdirectory to "$::configdir/pixmaps/" directory (tilde
-
-
-
-Shchepin, et al.                                               [Page 23]
-
-                             Tkabber v0.10.0                January 2007
-
-
    means home directory). _Tkabber_ knows that it is a theme directory
    by looking for "icondef.xml" file in the directory.  To find out the
    structure of icon definition file, look through _XEP-0038_ and go to
@@ -1298,6 +1281,14 @@
    If you're using the tabbed window interface, _Tkabber_ needs a way of
    telling you that something has changed in a window that's not on top.
    This is where the an array called _alert_lvls_ and a list called
+
+
+
+Shchepin, et al.                                               [Page 23]
+
+                             Tkabber v0.10.1                January 2007
+
+
    _alert_colors_ come in.  The array maps an incoming message to a
    priority number from zero to three.  The list, which is indexed
    starting at _zero_, indicates what color the tab should use to let
@@ -1337,14 +1328,6 @@
    Variable "plugins::autoaway::options(status)" allows to specify text
    status, which is set when _Tkabber_ is moving in away state.
 
-
-
-
-Shchepin, et al.                                               [Page 24]
-
-                             Tkabber v0.10.0                January 2007
-
-
 5.2.3.  The Avatar Module
 
    There are two variables that you can set to control whether _Tkabber_
@@ -1353,6 +1336,15 @@
    o  "avatar::options(announce)" determines whether your presence
       information indicates that you have an avatar; and,
 
+
+
+
+
+Shchepin, et al.                                               [Page 24]
+
+                             Tkabber v0.10.1                January 2007
+
+
    o  "avatar::options(share)" determines whether requests for your
       avatar will be honored.
 
@@ -1391,16 +1383,6 @@
    add this line to your post-load:
    set plugins::conferenceinfo::options(autoask) 1
 
-
-
-
-
-
-Shchepin, et al.                                               [Page 25]
-
-                             Tkabber v0.10.0                January 2007
-
-
    You can also set interval between these requests with these two
    variables:
 
@@ -1412,6 +1394,13 @@
    indicates that the server hosting the conference doesn't support
    browsing, so it makes sense not to try that often.
 
+
+
+Shchepin, et al.                                               [Page 25]
+
+                             Tkabber v0.10.1                January 2007
+
+
 5.2.7.  The Cryptographic Module
 
    Earlier (Section 5.1) we saw an example where the "ssj::options"
@@ -1449,14 +1438,6 @@
 
        set ft::options(download_dir) "/tmp"
 
-
-
-
-Shchepin, et al.                                               [Page 26]
-
-                             Tkabber v0.10.0                January 2007
-
-
 5.2.10.  The Groupchat Module
 
    There are several variables that set the dialog window defaults for
@@ -1465,6 +1446,17 @@
    add to roster dialog window: "gra_group" and "gra_server" specify the
       default room and conference server, repectively; and,
 
+
+
+
+
+
+
+Shchepin, et al.                                               [Page 26]
+
+                             Tkabber v0.10.1                January 2007
+
+
    join dialog window: "gr_nick", "gr_group" and "gr_server" specify the
       default nickname, room, and conference server, respectively.
 
@@ -1506,18 +1498,21 @@
    o  the encoding of the output by setting
       "plugins::ispell::options(dictionary_encoding)".
 
+   If you don't care about putting a large load on your process, then
+   you can also set "plugins::ispell::options(check_every_symbol)" to 1
+   to check correctness of current word after every entered symbol.
+   (Usually you don't need to set this option.)
 
 
+
+
+
+
 Shchepin, et al.                                               [Page 27]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
-   If you don't care about putting a large load on your process, then
-   you can also set "plugins::ispell::options(check_every_symbol)" to 1
-   to check correctness of current word after every entered symbol.
-   (Usually you don't need to set this option.)
-
 5.2.12.  The Stream Initiation Module
 
    Stream initiation profile is defined in _XEP-0095_ with two
@@ -1562,16 +1557,18 @@
    Element "loginconf(server)" must be set to _Jabber_ server name (the
    part of you _JID_ after "@".
 
+   Element "loginconf(stream_options)" is set to one of the following
+   values:
 
 
+
+
+
 Shchepin, et al.                                               [Page 28]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
-   Element "loginconf(stream_options)" is set to one of the following
-   values:
-
    o  plaintext -- use plaintext connection;
 
    o  encrypted -- use encrypted (via STARTTLS mechanism) connection
@@ -1620,9 +1617,12 @@
 
 
 
+
+
+
 Shchepin, et al.                                               [Page 29]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 5.2.15.  The Message Module
@@ -1678,7 +1678,7 @@
 
 Shchepin, et al.                                               [Page 30]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    If you want _Tkabber_ to stop notifying you when you are not online
@@ -1734,7 +1734,7 @@
 
 Shchepin, et al.                                               [Page 31]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    o  "sound::options(groupchat_their_message_sound)" -- sound playing
@@ -1790,7 +1790,7 @@
 
 Shchepin, et al.                                               [Page 32]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    4.  Finally, study the procedures listed here.
@@ -1846,7 +1846,7 @@
 
 Shchepin, et al.                                               [Page 33]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    Obviously, the second argument makes sense only if it's your own
@@ -1902,7 +1902,7 @@
 
 Shchepin, et al.                                               [Page 34]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    invokes a procedure called "finload", which does whatever you want it
@@ -1958,7 +1958,7 @@
 
 Shchepin, et al.                                               [Page 35]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 6.  Extensibility
@@ -2014,7 +2014,7 @@
 
 Shchepin, et al.                                               [Page 36]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    To continue with the example, in between the pre-load and post-load
@@ -2070,7 +2070,7 @@
 
 Shchepin, et al.                                               [Page 37]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    "chat::get_jid" and connection ID using "chat::get_connid" routines);
@@ -2126,7 +2126,7 @@
 
 Shchepin, et al.                                               [Page 38]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    When someone enters/exits conference, the following hooks are called:
@@ -2182,7 +2182,7 @@
 
 Shchepin, et al.                                               [Page 39]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    And for all received presence packets, a hook is run:
@@ -2238,7 +2238,7 @@
 
 Shchepin, et al.                                               [Page 40]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 6.5.  Miscellaneous Hooks
@@ -2294,7 +2294,7 @@
 
 Shchepin, et al.                                               [Page 41]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 7.  User Interface basics
@@ -2350,7 +2350,7 @@
 
 Shchepin, et al.                                               [Page 42]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
          concept found in Unix shells.
@@ -2406,13 +2406,39 @@
 
 Shchepin, et al.                                               [Page 43]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 Appendix A.  Releases History
 
-A.1.  Main changes in 0.10.0
+A.1.  Main changes in 0.10.1
 
+   o  New tabbed user interface.  Tab headers now occupy several rows
+
+   o  Added support for pixmaps JISP archives (XEP-0038), but not for
+      emoticons
+
+   o  Added support for SOCKS4a and SOCKS5 proxy for the main connection
+
+   o  Added user mood support (XEP-0107)
+
+   o  Added user activity support (XEP-0108)
+
+   o  Added user tune support (XEP-0118)
+
+   o  Added entity capabilities (only reporting) support
+
+   o  Moved deprecated Jabber Browser (XEP-0011) to an external plugin
+
+   o  Moved Jidlink file transfer to an external plugin
+
+   o  Added several new plugins: gmail, attline, presencecmd, custom-
+      urls, openurl
+
+   o  Many fixes and enhancements
+
+A.2.  Main changes in 0.10.0
+
    o  New artwork by Artem Bannikov
 
    o  Mediated SOCKS5 connection support for file transfer (XEP-0065)
@@ -2431,6 +2457,14 @@
 
    o  Roster item icons are chosen based on Disco queries to item server
 
+
+
+
+Shchepin, et al.                                               [Page 44]
+
+                             Tkabber v0.10.1                January 2007
+
+
    o  Search in Disco, Browser, Headlines, RawXML, and Customize windows
 
    o  New internal plugins: abbrev allows to abbreviate words in chat
@@ -2455,18 +2489,8 @@
 
    o  Many fixes and enhancements
 
+A.3.  Main changes in 0.9.9
 
-
-
-
-
-Shchepin, et al.                                               [Page 44]
-
-                             Tkabber v0.10.0                January 2007
-
-
-A.2.  Main changes in 0.9.9
-
    o  Improved privacy lists interface
 
    o  Support for stream compression (XEP-0138)
@@ -2483,12 +2507,20 @@
 
    o  Many fixes and enhancements
 
-A.3.  Main changes in 0.9.8
+A.4.  Main changes in 0.9.8
 
    o  Support for STARTTLS
 
    o  Reorganized menu
 
+
+
+
+Shchepin, et al.                                               [Page 45]
+
+                             Tkabber v0.10.1                January 2007
+
+
    o  Support for searching in chat window
 
    o  Support for annotations about roster items (XEP-0145)
@@ -2505,22 +2537,13 @@
 
    o  Many fixes and enhancements
 
-A.4.  Main changes in 0.9.7beta
+A.5.  Main changes in 0.9.7beta
 
    o  Updated support for file transfer (XEP-0095, XEP-0096, XEP-0047,
       XEP-0065)
 
    o  Support for colored nicks and messages in conference
 
-
-
-
-
-Shchepin, et al.                                               [Page 45]
-
-                             Tkabber v0.10.0                January 2007
-
-
    o  Better multiple logins support
 
    o  Updated support for xml:lang
@@ -2529,7 +2552,7 @@
 
    o  Many fixes and enhancements
 
-A.5.  Main changes in 0.9.6beta
+A.6.  Main changes in 0.9.6beta
 
    o  Multiple logins support
 
@@ -2545,8 +2568,17 @@
 
    o  Bugfixes
 
-A.6.  Main changes in 0.9.5beta
 
+
+
+
+Shchepin, et al.                                               [Page 46]
+
+                             Tkabber v0.10.1                January 2007
+
+
+A.7.  Main changes in 0.9.5beta
+
    o  Nested roster groups
 
    o  Messages emphasizing
@@ -2572,9 +2604,33 @@
 
 
 
-Shchepin, et al.                                               [Page 46]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Shchepin, et al.                                               [Page 47]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 Appendix B.  Tk option database resources
@@ -2628,9 +2684,9 @@
 
 
 
-Shchepin, et al.                                               [Page 47]
+Shchepin, et al.                                               [Page 48]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    *JDisco*Tree*background Background of service discovery browser.
@@ -2684,9 +2740,9 @@
 
 
 
-Shchepin, et al.                                               [Page 48]
+Shchepin, et al.                                               [Page 49]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    *Roster.jidindent Indentation for item name.
@@ -2740,9 +2796,9 @@
 
 
 
-Shchepin, et al.                                               [Page 49]
+Shchepin, et al.                                               [Page 50]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
    *Roster.chatforeground Colors of item name for different presences.
@@ -2796,9 +2852,9 @@
 
 
 
-Shchepin, et al.                                               [Page 50]
+Shchepin, et al.                                               [Page 51]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 Appendix C.  Documentation TODO
@@ -2852,9 +2908,9 @@
 
 
 
-Shchepin, et al.                                               [Page 51]
+Shchepin, et al.                                               [Page 52]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 Appendix D.  Acknowledgements
@@ -2908,9 +2964,9 @@
 
 
 
-Shchepin, et al.                                               [Page 52]
+Shchepin, et al.                                               [Page 53]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 Appendix E.  Copyrights
@@ -2964,9 +3020,9 @@
 
 
 
-Shchepin, et al.                                               [Page 53]
+Shchepin, et al.                                               [Page 54]
 
-                             Tkabber v0.10.0                January 2007
+                             Tkabber v0.10.1                January 2007
 
 
 Authors' Addresses
@@ -3020,5 +3076,5 @@
 
 
 
-Shchepin, et al.                                               [Page 54]
+Shchepin, et al.                                               [Page 55]
 

Modified: trunk/tkabber/doc/tkabber.html
===================================================================
--- trunk/tkabber/doc/tkabber.html	2007-10-05 17:25:18 UTC (rev 1241)
+++ trunk/tkabber/doc/tkabber.html	2007-10-05 19:37:56 UTC (rev 1242)
@@ -1,8 +1,8 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en"><head><title>Tkabber v0.10.0</title>
-<meta http-equiv="Expires" content="Fri, 31 Aug 2007 11:03:38 +0000">
+<html lang="en"><head><title>Tkabber v0.10.1</title>
+<meta http-equiv="Expires" content="Fri, 05 Oct 2007 19:35:28 +0000">
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<meta name="description" content="Tkabber v0.10.0">
+<meta name="description" content="Tkabber v0.10.1">
 <meta name="generator" content="xml2rfc v1.30 (http://xml.resource.org/)">
 <style type='text/css'>
 <!--
@@ -134,7 +134,7 @@
 <tr><td class="header">&nbsp;</td><td class="header">Information Centre ISP</td></tr>
 <tr><td class="header">&nbsp;</td><td class="header">January 2007</td></tr>
 </table></td></tr></table>
-<div align="right"><span class="title"><br />Tkabber v0.10.0</span></div>
+<div align="right"><span class="title"><br />Tkabber v0.10.1</span></div>
 
 <h3>Abstract</h3>
 
@@ -169,11 +169,9 @@
 Debugging Output<br />
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#s.preload-splashwindow">5.1.6.</a>&nbsp;
 Splash window<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#s.preload-sendempty">5.1.7.</a>&nbsp;
-Periodically send empty string to server<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#s.preload-internation">5.1.8.</a>&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#s.preload-internation">5.1.7.</a>&nbsp;
 I18n/L10n<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#s.preload-searching">5.1.9.</a>&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#s.preload-searching">5.1.8.</a>&nbsp;
 Searching<br />
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#s.postload">5.2.</a>&nbsp;
 Post-load<br />
@@ -250,24 +248,26 @@
 <a href="#anchor6">Appendix&nbsp;A.</a>&nbsp;
 Releases History<br />
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">A.1.</a>&nbsp;
+Main changes in 0.10.1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">A.2.</a>&nbsp;
 Main changes in 0.10.0<br />
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">A.2.</a>&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">A.3.</a>&nbsp;
 Main changes in 0.9.9<br />
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">A.3.</a>&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">A.4.</a>&nbsp;
 Main changes in 0.9.8<br />
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">A.4.</a>&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">A.5.</a>&nbsp;
 Main changes in 0.9.7beta<br />
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">A.5.</a>&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">A.6.</a>&nbsp;
 Main changes in 0.9.6beta<br />
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">A.6.</a>&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">A.7.</a>&nbsp;
 Main changes in 0.9.5beta<br />
 <a href="#XRDB">Appendix&nbsp;B.</a>&nbsp;
 Tk option database resources<br />
-<a href="#anchor13">Appendix&nbsp;C.</a>&nbsp;
+<a href="#anchor14">Appendix&nbsp;C.</a>&nbsp;
 Documentation TODO<br />
-<a href="#anchor14">Appendix&nbsp;D.</a>&nbsp;
+<a href="#anchor15">Appendix&nbsp;D.</a>&nbsp;
 Acknowledgements<br />
-<a href="#anchor15">Appendix&nbsp;E.</a>&nbsp;
+<a href="#anchor16">Appendix&nbsp;E.</a>&nbsp;
 Copyrights<br />
 <a href="#rfc.authors">&#167;</a>&nbsp;
 Authors' Addresses<br />
@@ -821,12 +821,6 @@
 set show_splash_window 0
 
 
-# periodically send empty string to server
-
-set keep_alive           0
-set keep_alive_interval 10
-
-
 # force english labels instead of native language
 
 ::msgcat::mclocale en
@@ -1046,23 +1040,9 @@
 </p><pre>
 set show_splash_window 0
 </pre>
-<a name="s.preload-sendempty"></a><br /><hr />
-<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
-<a name="rfc.section.5.1.7"></a><h3>5.1.7.&nbsp;Periodically send empty string to server</h3>
-
-<p>
-	      If you're using a proxy to talk to a Jabber server, after a
-	      period of inactivity, the proxy may decide to disconnect you.  To
-	      avoid this, you can tell <span class="emph">Tkabber</span> to send an empty
-	      string to the server every <span class="emph">keep_alive_interval</span> minutes:
-	    
-</p><pre>
-set keep_alive 1
-set keep_alive_interval 10
-</pre>
 <a name="s.preload-internation"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
-<a name="rfc.section.5.1.8"></a><h3>5.1.8.&nbsp;I18n/L10n</h3>
+<a name="rfc.section.5.1.7"></a><h3>5.1.7.&nbsp;I18n/L10n</h3>
 
 <p>
 	      <span class="emph">Tkabber</span> can show all messages in user's native language.  This
@@ -1079,7 +1059,7 @@
 </pre>
 <a name="s.preload-searching"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
-<a name="rfc.section.5.1.9"></a><h3>5.1.9.&nbsp;Searching</h3>
+<a name="rfc.section.5.1.8"></a><h3>5.1.8.&nbsp;Searching</h3>
 
 <p><span class="emph">Tkabber</span> allows the user to perform textual
 		searching in certain classes of its windows. This searching
@@ -2444,11 +2424,43 @@
 
 <a name="anchor7"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
-<a name="rfc.section.A.1"></a><h3>A.1.&nbsp;Main changes in 0.10.0</h3>
+<a name="rfc.section.A.1"></a><h3>A.1.&nbsp;Main changes in 0.10.1</h3>
 
 <p>
 	  </p>
 <ul class="text">
+<li>New tabbed user interface. Tab headers now occupy several rows
+</li>
+<li>Added support for pixmaps JISP archives (XEP-0038), but not for emoticons
+</li>
+<li>Added support for SOCKS4a and SOCKS5 proxy for the main connection
+</li>
+<li>Added user mood support (XEP-0107)
+</li>
+<li>Added user activity support (XEP-0108)
+</li>
+<li>Added user tune support (XEP-0118)
+</li>
+<li>Added entity capabilities (only reporting) support
+</li>
+<li>Moved deprecated Jabber Browser (XEP-0011) to an external plugin
+</li>
+<li>Moved Jidlink file transfer to an external plugin
+</li>
+<li>Added several new plugins: gmail, attline, presencecmd, custom-urls, openurl
+</li>
+<li>Many fixes and enhancements
+</li>
+</ul><p>
+	
+</p>
+<a name="anchor8"></a><br /><hr />
+<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
+<a name="rfc.section.A.2"></a><h3>A.2.&nbsp;Main changes in 0.10.0</h3>
+
+<p>
+	  </p>
+<ul class="text">
 <li>New artwork by Artem Bannikov
 </li>
 <li>Mediated SOCKS5 connection support for file transfer (XEP-0065)
@@ -2487,9 +2499,9 @@
 </ul><p>
 	
 </p>
-<a name="anchor8"></a><br /><hr />
+<a name="anchor9"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
-<a name="rfc.section.A.2"></a><h3>A.2.&nbsp;Main changes in 0.9.9</h3>
+<a name="rfc.section.A.3"></a><h3>A.3.&nbsp;Main changes in 0.9.9</h3>
 
 <p>
 	  </p>
@@ -2513,9 +2525,9 @@
 </ul><p>
 	
 </p>
-<a name="anchor9"></a><br /><hr />
+<a name="anchor10"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
-<a name="rfc.section.A.3"></a><h3>A.3.&nbsp;Main changes in 0.9.8</h3>
+<a name="rfc.section.A.4"></a><h3>A.4.&nbsp;Main changes in 0.9.8</h3>
 
 <p>
 	  </p>
@@ -2543,9 +2555,9 @@
 </ul><p>
 	
 </p>
-<a name="anchor10"></a><br /><hr />
+<a name="anchor11"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
-<a name="rfc.section.A.4"></a><h3>A.4.&nbsp;Main changes in 0.9.7beta</h3>
+<a name="rfc.section.A.5"></a><h3>A.5.&nbsp;Main changes in 0.9.7beta</h3>
 
 <p>
 	  </p>
@@ -2565,9 +2577,9 @@
 </ul><p>
 	
 </p>
-<a name="anchor11"></a><br /><hr />
+<a name="anchor12"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
-<a name="rfc.section.A.5"></a><h3>A.5.&nbsp;Main changes in 0.9.6beta</h3>
+<a name="rfc.section.A.6"></a><h3>A.6.&nbsp;Main changes in 0.9.6beta</h3>
 
 <p>
 	  </p>
@@ -2589,9 +2601,9 @@
 </ul><p>
 	
 </p>
-<a name="anchor12"></a><br /><hr />
+<a name="anchor13"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
-<a name="rfc.section.A.6"></a><h3>A.6.&nbsp;Main changes in 0.9.5beta</h3>
+<a name="rfc.section.A.7"></a><h3>A.7.&nbsp;Main changes in 0.9.5beta</h3>
 
 <p>
 	  </p>
@@ -2889,7 +2901,7 @@
 </dl></blockquote><p>
       
 </p>
-<a name="anchor13"></a><br /><hr />
+<a name="anchor14"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
 <a name="rfc.section.C"></a><h3>Appendix C.&nbsp;Documentation TODO</h3>
 
@@ -2933,7 +2945,7 @@
 </li>
 </ul>
 
-<a name="anchor14"></a><br /><hr />
+<a name="anchor15"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
 <a name="rfc.section.D"></a><h3>Appendix D.&nbsp;Acknowledgements</h3>
 
@@ -2944,7 +2956,7 @@
 and "blue feather" pixmap themes and the "Earth bulb" logo) was
 designed by Artem Bannikov.
 </p>
-<a name="anchor15"></a><br /><hr />
+<a name="anchor16"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
 <a name="rfc.section.E"></a><h3>Appendix E.&nbsp;Copyrights</h3>
 

Modified: trunk/tkabber/doc/tkabber.xml
===================================================================
--- trunk/tkabber/doc/tkabber.xml	2007-10-05 17:25:18 UTC (rev 1241)
+++ trunk/tkabber/doc/tkabber.xml	2007-10-05 19:37:56 UTC (rev 1242)
@@ -8,7 +8,7 @@
 
 <rfc>
 <front>
-<title>Tkabber v0.10.0</title>
+<title>Tkabber v0.10.1</title>
 
     <author initials='A.Y.' surname='Shchepin'
 	    fullname='Alexey Yurievich Shchepin'>
@@ -530,12 +530,6 @@
 set show_splash_window 0
 
 
-# periodically send empty string to server
-
-set keep_alive           0
-set keep_alive_interval 10
-
-
 # force english labels instead of native language
 
 ::msgcat::mclocale en
@@ -755,21 +749,6 @@
 	  </figure>
 	</section>
 
-	<section anchor='s.preload-sendempty' title="Periodically send empty string to server">
-	  <figure>
-	    <preamble>
-	      If you're using a proxy to talk to a Jabber server, after a
-	      period of inactivity, the proxy may decide to disconnect you.  To
-	      avoid this, you can tell <spanx>Tkabber</spanx> to send an empty
-	      string to the server every <spanx>keep_alive_interval</spanx> minutes:
-	    </preamble>
-<artwork><![CDATA[
-set keep_alive 1
-set keep_alive_interval 10
-]]></artwork>
-	  </figure>
-	</section>
-
 	<section anchor='s.preload-internation' title="I18n/L10n">
 	  <figure>
 	    <preamble>
@@ -2136,6 +2115,23 @@
   <back>
 
     <section title="Releases History">
+      <section title="Main changes in 0.10.1">
+	<t>
+	  <list style='symbols'>
+	    <t>New tabbed user interface. Tab headers now occupy several rows</t>
+	    <t>Added support for pixmaps JISP archives (XEP-0038), but not for emoticons</t>
+	    <t>Added support for SOCKS4a and SOCKS5 proxy for the main connection</t>
+	    <t>Added user mood support (XEP-0107)</t>
+	    <t>Added user activity support (XEP-0108)</t>
+	    <t>Added user tune support (XEP-0118)</t>
+	    <t>Added entity capabilities (only reporting) support</t>
+	    <t>Moved deprecated Jabber Browser (XEP-0011) to an external plugin</t>
+	    <t>Moved Jidlink file transfer to an external plugin</t>
+	    <t>Added several new plugins: gmail, attline, presencecmd, custom-urls, openurl</t>
+	    <t>Many fixes and enhancements</t>
+	  </list>
+	</t>
+      </section>
       <section title="Main changes in 0.10.0">
 	<t>
 	  <list style='symbols'>

Modified: trunk/tkabber/jabberlib-tclxml/jabberlib.tcl
===================================================================
--- trunk/tkabber/jabberlib-tclxml/jabberlib.tcl	2007-10-05 17:25:18 UTC (rev 1241)
+++ trunk/tkabber/jabberlib-tclxml/jabberlib.tcl	2007-10-05 19:37:56 UTC (rev 1242)
@@ -65,12 +65,12 @@
 proc jlib::noop args
 }
 
-lappend auto_path [file dirname [info script]]
-if {![info exists use_external_tclxml] || $use_external_tclxml == 0} {
+if {[info exists use_external_tclxml] && $use_external_tclxml} {
+    package require tdom 0.8
+} else {
     package require -exact xml 2.0
-} else {
-    package require xml 2.0
 }
+
 package require sha1
 package require msgcat
 
@@ -116,15 +116,6 @@
 
 ######################################################################
 
-if {![info exists keep_alive]} {
-    set keep_alive 0
-}
-if {![info exists keep_alive_interval]} {
-    set keep_alive_interval 10
-}
-
-######################################################################
-
 proc jlib::capabilities {type} {
     variable lib
 
@@ -322,8 +313,7 @@
 	lappend params -version "1.0"
     }
 
-    outmsg [eval [list wrapper:streamheader $server] $params] \
-	-connection $connid
+    eval [list start_stream $server -connection $connid] $params
 
     return $connid
 }
@@ -441,8 +431,7 @@
 	set idx [lsearch -exact $lib(connections) $connid]
 	if {$idx < 0} continue
 
-	cancel_keepalive $connid
-	outmsg [wrapper:streamtrailer] -connection $connid
+	finish_stream -connection $connid
 	set lib($connid,disconnecting) 1
 	catch {
 	    transport::$lib($connid,transport)::disconnect $connid
@@ -529,7 +518,6 @@
 	# Already disconnected
     }
 
-    cancel_keepalive $connid
     transport::$lib($connid,transport)::close $connid
 
     if {!$lib($connid,disconnecting)} {
@@ -540,8 +528,6 @@
 ######################################################################
 
 proc jlib::outmsg {msg args} {
-    global keep_alive keep_alive_interval
-    variable keep_alive_id
     variable lib
 
     foreach {attr val} $args {
@@ -550,17 +536,12 @@
 	}
     }
 
-    if {$lib(connections) == {}} {
-	::LOG "error (jlib::outmsg) No connections"
+    if {![info exists connid]} {
+	::LOG "error (jlib::outmsg) -connection is mandatory"
 	return -1
     }
 
-    if {![info exists connid]} {
-	set connid [lindex $lib(connections) 0]
-    }
 
-    cancel_keepalive $connid
-
     if {[lsearch -exact $lib(connections) $connid] < 0} {
 	::LOG "error (jlib::outmsg) Connection $connid doesn't exist"
 	return -1
@@ -574,34 +555,82 @@
     ::LOG "(jlib::outmsg) ($connid) '$msg'"
     ::LOG_OUTPUT $connid $msg
 
-    if {$keep_alive} {
-	set keep_alive_id [after [expr $keep_alive_interval * 60 * 1000] \
-			       [namespace current]::out_keepalive $connid]
-    }
-
     return [transport::$lib($connid,transport)::outmsg $connid $msg]
 }
 
 ######################################################################
 
-proc jlib::out_keepalive {connid} {
-    outmsg " " -connection $connid
+proc jlib::start_stream {to args} {
+    variable lib
+
+    foreach {attr val} $args {
+	switch -- $attr {
+	    -connection {set connid $val}
+	}
+    }
+
+    if {![info exists connid]} {
+	::LOG "error (jlib::start_stream) -connection is mandatory"
+	return -1
+    }
+
+
+    if {[lsearch -exact $lib(connections) $connid] < 0} {
+	::LOG "error (jlib::start_stream) Connection $connid doesn't exist"
+	return -1
+    }
+
+    if {$lib($connid,disconnecting)} {
+	::LOG "error (jlib::start_stream) Message while disconnecting..."
+	return -1
+    }
+
+    set msg [eval [list wrapper:streamheader $to] $args]
+    ::LOG "(jlib::start_stream) ($connid) '$msg'"
+    ::LOG_OUTPUT $connid $msg
+
+    return [eval [list transport::$lib($connid,transport)::start_stream \
+		       $connid $to] $args]
 }
 
-# TODO: connid
-proc jlib::cancel_keepalive {connid} {
-    variable keep_alive_id
+######################################################################
 
-    if {[info exists keep_alive_id]} {
-	after cancel $keep_alive_id
+proc jlib::finish_stream {args} {
+    variable lib
+
+    foreach {attr val} $args {
+	switch -- $attr {
+	    -connection {set connid $val}
+	}
     }
+
+    if {![info exists connid]} {
+	::LOG "error (jlib::finish_stream) -connection is mandatory"
+	return -1
+    }
+
+
+    if {[lsearch -exact $lib(connections) $connid] < 0} {
+	::LOG "error (jlib::finish_stream) Connection $connid doesn't exist"
+	return -1
+    }
+
+    if {$lib($connid,disconnecting)} {
+	::LOG "error (jlib::finish_stream) Message while disconnecting..."
+	return -1
+    }
+
+    set msg [wrapper:streamtrailer]
+    ::LOG "(jlib::start_stream) ($connid) '$msg'"
+    ::LOG_OUTPUT $connid $msg
+
+    return [eval [list transport::$lib($connid,transport)::finish_stream \
+		       $connid] $args]
 }
 
 ######################################################################
 
 proc jlib::inmsg {connid msg eof} {
-    global keep_alive keep_alive_interval
-    variable keep_alive_id
     variable lib
 
     if {[lsearch -exact $lib(connections) $connid] < 0} {
@@ -609,13 +638,6 @@
 	return -1
     }
 
-    # TODO
-    if {$keep_alive} {
-	cancel_keepalive $connid
-	set keep_alive_id [after [expr $keep_alive_interval * 60 * 1000] \
-			       [namespace current]::out_keepalive $connid]
-    }
-
     incr lib($connid,bytes_counter) [string bytelength $msg]
 
     ::LOG "(jlib::inmsg) ($connid) '$msg'"
@@ -623,7 +645,6 @@
     wrapper:parser $lib($connid,wrap) parse $msg
 
     if {!$lib($connid,parse_end) && $eof} {
-	cancel_keepalive $connid
 	transport::$lib($connid,transport)::close $connid
 
 	if {$lib($connid,disconnecting)} {
@@ -1851,5 +1872,5 @@
 # Now that we're done...
 #
 
-package provide jabberlib 0.10.0
+package provide jabberlib 0.10.1
 

Modified: trunk/tkabber/jabberlib-tclxml/jlibcompress.tcl
===================================================================
--- trunk/tkabber/jabberlib-tclxml/jlibcompress.tcl	2007-10-05 17:25:18 UTC (rev 1241)
+++ trunk/tkabber/jabberlib-tclxml/jlibcompress.tcl	2007-10-05 19:37:56 UTC (rev 1242)
@@ -221,10 +221,9 @@
 
     jlib::reset $state(-connid)
 
-    jlib::outmsg [jlib::wrapper:streamheader \
-		      [jlib::connection_server $state(-connid)] \
-		      -xml:lang [jlib::get_lang] -version "1.0"] \
-	-connection $state(-connid)
+    jlib::start_stream [jlib::connection_server $state(-connid)] \
+		       -xml:lang [jlib::get_lang] -version "1.0" \
+		       -connection $state(-connid)
     finish $token OK {}
 }
 

Modified: trunk/tkabber/jabberlib-tclxml/jlibsasl.tcl
===================================================================
--- trunk/tkabber/jabberlib-tclxml/jlibsasl.tcl	2007-10-05 17:25:18 UTC (rev 1241)
+++ trunk/tkabber/jabberlib-tclxml/jlibsasl.tcl	2007-10-05 19:37:56 UTC (rev 1242)
@@ -543,10 +543,9 @@
     
     jlib::reset $state(-connid)
     
-    jlib::outmsg [jlib::wrapper:streamheader \
-		      [jlib::connection_server $state(-connid)] \
-		      -xml:lang [jlib::get_lang] -version "1.0"] \
-	-connection $state(-connid)
+    jlib::start_stream [jlib::connection_server $state(-connid)] \
+		       -xml:lang [jlib::get_lang] -version "1.0" \
+		       -connection $state(-connid)
 	
     jlib::trace_stream_features $state(-connid) \
 	[list [namespace code resource_bind] $token]

Modified: trunk/tkabber/jabberlib-tclxml/jlibtls.tcl
===================================================================
--- trunk/tkabber/jabberlib-tclxml/jlibtls.tcl	2007-10-05 17:25:18 UTC (rev 1241)
+++ trunk/tkabber/jabberlib-tclxml/jlibtls.tcl	2007-10-05 19:37:56 UTC (rev 1242)
@@ -217,10 +217,9 @@
 
     jlib::reset $state(-connid)
 
-    jlib::outmsg [jlib::wrapper:streamheader \
-		      [jlib::connection_server $state(-connid)] \
-		      -xml:lang [jlib::get_lang] -version "1.0"] \
-	-connection $state(-connid)
+    jlib::start_stream [jlib::connection_server $state(-connid)] \
+		       -xml:lang [jlib::get_lang] -version "1.0" \
+		       -connection $state(-connid)
     finish $token OK {}
 }
 

Modified: trunk/tkabber/jabberlib-tclxml/pkgIndex.tcl
===================================================================
--- trunk/tkabber/jabberlib-tclxml/pkgIndex.tcl	2007-10-05 17:25:18 UTC (rev 1241)
+++ trunk/tkabber/jabberlib-tclxml/pkgIndex.tcl	2007-10-05 19:37:56 UTC (rev 1242)
@@ -1,4 +1,4 @@
-package ifneeded jabberlib 0.10.0 [list source [file join $dir jabberlib.tcl]]
+package ifneeded jabberlib 0.10.1 [list source [file join $dir jabberlib.tcl]]
 package ifneeded namespaces 1.0 [list source [file join $dir namespaces.tcl]]
 package ifneeded jlibauth 1.0 [list source [file join $dir jlibauth.tcl]]
 package ifneeded jlibsasl 1.0 [list source [file join $dir jlibsasl.tcl]]

Modified: trunk/tkabber/jabberlib-tclxml/transports.tcl
===================================================================
--- trunk/tkabber/jabberlib-tclxml/transports.tcl	2007-10-05 17:25:18 UTC (rev 1241)
+++ trunk/tkabber/jabberlib-tclxml/transports.tcl	2007-10-05 19:37:56 UTC (rev 1242)
@@ -28,12 +28,13 @@
 namespace eval transport::tcp {}
 
 proc transport::tcp::connect {connid server port args} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
     set sock [eval [list autoconnect::socket $server $port] $args]
     fconfigure $sock -blocking 0 -buffering none \
 	       -translation auto -encoding utf-8
-    set lib($connid,socket) $sock
+    set lib(socket) $sock
 
     fileevent $sock readable \
 	      [list [namespace current]::inmsg $connid $sock]
@@ -42,43 +43,55 @@
 }
 
 proc transport::tcp::outmsg {connid msg} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
-    if {![info exists lib($connid,socket)]} {
+    if {![info exists lib(socket)]} {
 	::LOG "error ([namespace current]::outmsg)\
 	       Cannot write to socket: socket for\
 	       connection $connid doesn't exist"
 	return -2
     }
 
-    if {[catch { puts -nonewline $lib($connid,socket) $msg }]} {
+    if {[catch { puts -nonewline $lib(socket) $msg }]} {
 	::LOG "error ([namespace current]::outmsg)\
-	       Cannot write to socket: $lib($connid,socket)"
+	       Cannot write to socket: $lib(socket)"
 	return -2
     }
 }
 
+proc transport::tcp::start_stream {connid server args} {
+    return [outmsg $connid \
+		   [eval [list jlib::wrapper:streamheader $server] $args]]
+}
+
+proc transport::tcp::finish_stream {connid args} {
+    return [outmsg $connid [jlib::wrapper:streamtrailer]]
+}
+
 proc transport::tcp::disconnect {connid} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
     catch {
 	if {[set [namespace parent]::disconnect] == "quick"} {
-	    flush $lib($connid,socket)
+	    flush $lib(socket)
 	} else {
-	    fconfigure $lib($connid,socket) -blocking 1
-	    flush $lib($connid,socket)
-	    vwait [namespace current]::lib($connid,socket)
+	    fconfigure $lib(socket) -blocking 1
+	    flush $lib(socket)
+	    vwait [namespace current]::${connid}(socket)
 	}
     }
 }
 
 proc transport::tcp::close {connid} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
-    catch { fileevent $lib($connid,socket) readable {} }
-    catch { ::close $lib($connid,socket) }
+    catch {fileevent $lib(socket) readable {}}
+    catch {::close $lib(socket)}
 
-    array unset lib $connid,*
+    catch {unset lib}
 }
 
 ######################################################################
@@ -92,24 +105,25 @@
 ######################################################################
 # TODO Cleanup
 proc transport::tcp::to_compress {connid method} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
-    set [namespace parent]::${method}::lib($connid,socket) \
-	$lib($connid,socket)
+    set [namespace parent]::${method}::${connid}(socket) $lib(socket)
     eval [list [namespace parent]::${method}::import $connid]
     set ::jlib::lib($connid,transport) $method
 
-    array unset lib $connid,*
+    catch {unset lib}
 }
 
 proc transport::tcp::to_tls {connid args} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
-    set [namespace parent]::tls::lib($connid,socket) $lib($connid,socket)
+    set [namespace parent]::tls::${connid}(socket) $lib(socket)
     eval [list [namespace parent]::tls::tls_import $connid] $args
     set ::jlib::lib($connid,transport) tls
 
-    array unset lib $connid,*
+    catch {unset lib}
 }
 
 
@@ -126,58 +140,71 @@
 namespace eval transport::zlib {}
 
 proc transport::zlib::connect {connid server port args} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
     set sock [eval [list autoconnect::socket $server $port] $args]
 
-    set lib($connid,socket) $sock
+    set lib(socket) $sock
     import $connid
 
     return $sock
 }
 
 proc transport::zlib::outmsg {connid msg} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
-    if {![info exists lib($connid,socket)]} {
+    if {![info exists lib(socket)]} {
 	::LOG "error ([namespace current]::outmsg)\
 	       Cannot write to socket: socket for connection\
 	       $connid doesn't exist"
 	return -2
     }
 
-    if {[catch { puts -nonewline $lib($connid,socket) $msg }]} {
+    if {[catch { puts -nonewline $lib(socket) $msg }]} {
 	::LOG "error ([namespace current]::outmsg)\
-	       Cannot write to socket: $lib($connid,socket)"
+	       Cannot write to socket: $lib(socket)"
 	return -2
     }
-    flush $lib($connid,socket)
-    fconfigure $lib($connid,socket) -flush output
+    flush $lib(socket)
+    fconfigure $lib(socket) -flush output
 }
 
+proc transport::zlib::start_stream {connid server args} {
+    return [outmsg $connid \
+		   [eval [list jlib::wrapper:streamheader $server] $args]]
+}
+
+proc transport::zlib::finish_stream {connid args} {
+    return [outmsg $connid [jlib::wrapper:streamtrailer]]
+}
+
 proc transport::zlib::disconnect {connid} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
     catch {
 	if {[set [namespace parent]::disconnect] == "quick"} {
-	    flush $lib($connid,socket)
-	    fconfigure $lib($connid,socket) -finish output
+	    flush $lib(socket)
+	    fconfigure $lib(socket) -finish output
 	} else {
-	    fconfigure $lib($connid,socket) -blocking 1
-	    flush $lib($connid,socket)
-	    fconfigure $lib($connid,socket) -finish output
-	    vwait [namespace current]::lib($connid,socket)
+	    fconfigure $lib(socket) -blocking 1
+	    flush $lib(socket)
+	    fconfigure $lib(socket) -finish output
+	    vwait [namespace current]::${connid}(socket)
 	}
     }
 }
 
 proc transport::zlib::close {connid} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
-    catch { fileevent $lib($connid,socket) readable {} }
-    catch { ::close $lib($connid,socket) }
+    catch {fileevent $lib(socket) readable {}}
+    catch {::close $lib(socket)}
 
-    array unset lib $connid,*
+    catch {unset lib}
 }
 
 ######################################################################
@@ -193,13 +220,13 @@
 
 ######################################################################
 proc transport::zlib::import {connid args} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
-    set sock $lib($connid,socket)
+    set sock $lib(socket)
     fconfigure $sock -blocking 0 -buffering none \
 	       -translation auto -encoding utf-8
-    zlib stream $lib($connid,socket) RDWR -output compress \
-	 -input decompress
+    zlib stream $sock RDWR -output compress -input decompress
 
     fileevent $sock readable \
 	      [list [namespace current]::inmsg $connid $sock]
@@ -218,7 +245,8 @@
 namespace eval transport::tls {}
 
 proc transport::tls::connect {connid server port args} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
     set tlsargs {}
     foreach {opt val} $args {
@@ -245,50 +273,62 @@
 
     fconfigure $sock -encoding binary -translation binary
 
-    set lib($connid,socket) $sock
+    set lib(socket) $sock
     eval [list tls_import $connid] $tlsargs
 
     return $sock
 }
 
 proc transport::tls::outmsg {connid msg} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
-    if {![info exists lib($connid,socket)]} {
+    if {![info exists lib(socket)]} {
 	::LOG "error ([namespace current]::outmsg)\
 	       Cannot write to socket: socket for connection\
 	       $connid doesn't exist"
 	return -2
     }
 
-    if {[catch { puts -nonewline $lib($connid,socket) $msg }]} {
+    if {[catch { puts -nonewline $lib(socket) $msg }]} {
 	::LOG "error ([namespace current]::outmsg)\
-	       Cannot write to socket: $lib($connid,socket)"
+	       Cannot write to socket: $lib(socket)"
 	return -2
     }
 }
 
+proc transport::tls::start_stream {connid server args} {
+    return [outmsg $connid \
+		   [eval [list jlib::wrapper:streamheader $server] $args]]
+}
+
+proc transport::tls::finish_stream {connid args} {
+    return [outmsg $connid [jlib::wrapper:streamtrailer]]
+}
+
 proc transport::tls::disconnect {connid} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
     catch {
 	if {[set [namespace parent]::disconnect] == "quick"} {
-	    flush $lib($connid,socket)
+	    flush $lib(socket)
 	} else {
-	    fconfigure $lib($connid,socket) -blocking 1
-	    flush $lib($connid,socket)
-	    vwait [namespace current]::lib($connid,socket)
+	    fconfigure $lib(socket) -blocking 1
+	    flush $lib(socket)
+	    vwait [namespace current]::${connid}(socket)
 	}
     }
 }
 
 proc transport::tls::close {connid} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
-    catch { fileevent $lib($connid,socket) readable {} }
-    catch { ::close $lib($connid,socket) }
+    catch {fileevent $lib(socket) readable {}}
+    catch {::close $lib(socket)}
 
-    array unset lib $connid,*
+    catch {unset lib}
 }
 
 ######################################################################
@@ -306,9 +346,10 @@
 
 ######################################################################
 proc transport::tls::tls_import {connid args} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
-    set sock $lib($connid,socket)
+    set sock $lib(socket)
 
     fileevent $sock readable {}
     fileevent $sock writable {}
@@ -323,8 +364,8 @@
 	       -require false \
 	       -server  false] $args
 
-    if {[catch { tls::handshake $sock } tls_result]} {
-	catch { ::close $sock }
+    if {[catch {tls::handshake $sock} tls_result]} {
+	catch {::close $sock}
 	error $tls_result
     }
 
@@ -338,14 +379,14 @@
 ######################################################################
 # TODO Cleanup
 proc transport::tls::to_compress {connid method} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
-    set [namespace parent]::${method}::lib($connid,socket) \
-	$lib($connid,socket)
+    set [namespace parent]::${method}::${connid}(socket) $lib(socket)
     eval [list [namespace parent]::${method}::import $connid]
     set ::jlib::lib($connid,transport) $method
 
-    array unset lib $connid,*
+    catch {unset lib}
 }
 
 ######################################################################
@@ -357,8 +398,7 @@
 package require sha1
 
 namespace eval transport::http_poll {
-    variable lib
-    set lib(http_version) [package require http]
+    variable http_version [package require http]
 }
 
 if {![catch { package require tls 1.4 }]} {
@@ -366,75 +406,75 @@
 }
 
 proc transport::http_poll::connect {connid server port args} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
-    set lib($connid,polltimeout) 0
-    set lib($connid,pollint) 3000
-    set lib($connid,pollmin) 3000
-    set lib($connid,pollmax) 30000
-    set lib($connid,proxyhost) ""
-    set lib($connid,proxyport) ""
-    set lib($connid,proxyusername) ""
-    set lib($connid,proxypassword) ""
-    set lib($connid,proxyuseragent) ""
-    set lib($connid,pollurl) ""
-    set lib($connid,pollusekeys) 1
-    set lib($connid,pollnumkeys) 100
+    set lib(polltimeout)    0
+    set lib(pollint)        6000
+    set lib(pollmin)        6000
+    set lib(pollmax)        60000
+    set lib(proxyhost)      ""
+    set lib(proxyport)      ""
+    set lib(proxyusername)  ""
+    set lib(proxypassword)  ""
+    set lib(proxyuseragent) ""
+    set lib(httpurl)        ""
+    set lib(httpusekeys)    1
+    set lib(httpnumkeys)    100
 
     foreach {opt val} $args {
 	switch -- $opt {
-	    -polltimeout   { set lib($connid,polltimeout) $val }
-	    -pollint       { set lib($connid,pollint) $val }
-	    -pollmin       { set lib($connid,pollmin) $val }
-	    -pollmax       { set lib($connid,pollmax) $val }
-	    -pollurl       { set lib($connid,pollurl) $val }
-	    -pollusekeys   { set lib($connid,pollusekeys) $val }
-	    -pollnumkeys   { set lib($connid,pollnumkeys) $val }
-	    -proxyhost     { set lib($connid,proxyhost) $val }
-	    -proxyport     { set lib($connid,proxyport) $val }
-	    -proxyusername { set lib($connid,proxyusername) $val }
-	    -proxypassword { set lib($connid,proxypassword) $val }
-	    -proxyuseragent { set lib($connid,proxyuseragent) $val }
+	    -polltimeout    { set lib(polltimeout)    $val }
+	    -pollint        { set lib(pollint)        $val }
+	    -pollmin        { set lib(pollmin)        $val }
+	    -pollmax        { set lib(pollmax)        $val }
+	    -httpurl        { set lib(httpurl)        $val }
+	    -httpusekeys    { set lib(httpusekeys)    $val }
+	    -httpnumkeys    { set lib(httpnumkeys)    $val }
+	    -proxyhost      { set lib(proxyhost)      $val }
+	    -proxyport      { set lib(proxyport)      $val }
+	    -proxyusername  { set lib(proxyusername)  $val }
+	    -proxypassword  { set lib(proxypassword)  $val }
+	    -proxyuseragent { set lib(proxyuseragent) $val }
 	}
     }
 
-    set lib($connid,pollwait) disconnected
-    set lib($connid,polloutdata) ""
-    set lib($connid,pollseskey) 0
-    set lib($connid,pollid) ""
-    set lib($connid,pollkeys) {}
+    set lib(httpwait)    disconnected
+    set lib(httpoutdata) ""
+    set lib(httpseskey)  0
+    set lib(httpid)      ""
+    set lib(httpkeys)    {}
 
-    if {$lib($connid,proxyuseragent) != ""} {
-	::http::config -useragent $lib($connid,proxyuseragent)
+    if {$lib(proxyuseragent) != ""} {
+	::http::config -useragent $lib(proxyuseragent)
     }
 
-    if {($lib($connid,proxyhost) != "") && ($lib($connid,proxyport) != "")} {
-	::http::config -proxyhost $lib($connid,proxyhost) \
-		       -proxyport $lib($connid,proxyport)
+    if {($lib(proxyhost) != "") && ($lib(proxyport) != "")} {
+	::http::config -proxyhost $lib(proxyhost) -proxyport $lib(proxyport)
 
-	if {$lib($connid,proxyusername) != ""} {
+	if {$lib(proxyusername) != ""} {
 	    set auth \
 		[base64::encode \
                      [encoding convertto \
-			  "$lib($connid,proxyusername):$lib($connid,proxypassword)"]]
-	    set lib($connid,proxyauth) [list "Proxy-Authorization" "Basic $auth"]
+			  "$lib(proxyusername):$lib(proxypassword)"]]
+	    set lib(proxyauth) [list "Proxy-Authorization" "Basic $auth"]
 	} else {
-	    set lib($connid,proxyauth) {}
+	    set lib(proxyauth) {}
 	}
     } else {
-	    set lib($connid,proxyauth) {}
+	    set lib(proxyauth) {}
     }
 
-    if {$lib($connid,pollusekeys)} {
+    if {$lib(httpusekeys)} {
         # generate keys
 	::HTTP_LOG "connect ($connid): generating keys"
         set seed [rand 1000000000]
         set oldkey $seed
-        set key_count $lib($connid,pollnumkeys)
-        while { $key_count } {
+        set key_count $lib(httpnumkeys)
+        while {$key_count > 0} {
             set nextkey [base64::encode [hex_decode [sha1::sha1 $oldkey]]]
             # skip the initial seed
-            lappend lib($connid,pollkeys) $nextkey
+            lappend lib(httpkeys) $nextkey
             set oldkey $nextkey
             incr key_count -1
         }
@@ -444,13 +484,14 @@
 }
 
 proc transport::http_poll::outmsg {connid msg} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
-    if {![info exists lib($connid,pollwait)]} {
+    if {![info exists lib(httpwait)]} {
 	return
     }
 
-    switch -- $lib($connid,pollwait) {
+    switch -- $lib(httpwait) {
 	disconnected -
 	waiting -
 	disconnecting { }
@@ -458,34 +499,44 @@
     }
 }
 
+proc transport::http_poll::start_stream {connid server args} {
+    return [outmsg $connid \
+		   [eval [list jlib::wrapper:streamheader $server] $args]]
+}
+
+proc transport::http_poll::finish_stream {connid args} {
+    return [outmsg $connid [jlib::wrapper:streamtrailer]]
+}
+
 proc transport::http_poll::disconnect {connid} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
-    if {![info exists lib($connid,pollwait)]} {
+    if {![info exists lib(httpwait)]} {
 	return
     }
 
-    switch -- $lib($connid,pollwait) {
+    switch -- $lib(httpwait) {
 	disconnected -
 	waiting { }
 	polling { set_httpwait $connid waiting }
 	default { set_httpwait $connid disconnecting }
     }
 
-    if {[set [namespace parent]::disconnect] != "quick"} {
-	while {[info exists lib($connid,pollwait)] && \
-		    $lib($connid,pollwait) != "disconnected"} {
-	    vwait [namespace current]::lib($connid,pollwait)
-	}
+    if {[set [namespace parent]::disconnect] == "quick"} return
+
+    while {[info exists lib(httpwait)] && $lib(httpwait) != "disconnected"} {
+	vwait [namespace current]::${connid}(httpwait)
     }
 }
 
 proc transport::http_poll::close {connid} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
     set_httpwait $connid disconnected
 
-    array unset lib $connid,*
+    catch {unset lib}
 }
 
 ######################################################################
@@ -500,25 +551,24 @@
 
 ######################################################################
 proc transport::http_poll::set_httpwait {connid opt} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
-    set lib($connid,pollwait) $opt
-    if {$opt == "disconnected"} {
-	if {[info exists lib($connid,pollid)] && \
-		$lib($connid,pollid) != ""} {
-	    after cancel $lib($connid,pollid)
-	}
+    set lib(httpwait) $opt
+    if {$opt == "disconnected" && \
+	    [info exists lib(httpid)] && $lib(httpid) != ""} {
+	after cancel $lib(httpid)
     }
 }
 
 proc transport::http_poll::process_httpreply {connid try query token} {
-    variable lib
-
+    variable $connid
+    upvar 0 $connid lib
     upvar #0 $token state
 
-    if {[set temp [::http::ncode $token]] != 200} {
-	::HTTP_LOG "error (process_httpreply)\
-($connid) Http returned $temp $state(status)"
+    if {[::http::ncode $token] != 200} {
+	::HTTP_LOG "error (process_httpreply) ($connid)\
+		    Http returned [::http::ncode $token] $state(status)"
 	if {$try < 3} {
 	    get_url $connid [expr {$try + 1}] $query
 	} else {
@@ -540,15 +590,15 @@
 	    if {[string equal -nocase -length 3 "ID=" $value]} {
 		set start 3
 	    }
-	    set lib($connid,pollseskey) [string range $value $start [expr {$end - 1}]]
+	    set lib(httpseskey) [string range $value $start [expr {$end - 1}]]
 	}
     }
+
     set inmsg [encoding convertfrom utf-8 $state(body)]
     ::HTTP_LOG "process_httpreply ($connid): '$inmsg'"
     ::http::cleanup $token
 
-    if {[regexp {:0$} $lib($connid,pollseskey)] || \
-	    [regexp {%3A0$} $lib($connid,pollseskey)]} {
+    if {[regexp {:0$} $lib(httpseskey)] || [regexp {%3A0$} $lib(httpseskey)]} {
 	::HTTP_LOG "error (process_httpreply) Cookie Error"
 	set_httpwait $connid disconnected
 	jlib::emergency_disconnect $connid
@@ -556,44 +606,45 @@
     }
 
     if {[string length $inmsg] > 5 } {
-	set lib($connid,pollint) [expr $lib($connid,pollint) / 2]
-	if {$lib($connid,pollint) < $lib($connid,pollmin)} {
-	    set lib($connid,pollint) $lib($connid,pollmin)
+	set lib(pollint) [expr $lib(pollint) / 2]
+	if {$lib(pollint) < $lib(pollmin)} {
+	    set lib(pollint) $lib(pollmin)
 	}
     } else {
-	set lib($connid,pollint) [expr $lib($connid,pollint) * 11 / 10]
-	if {$lib($connid,pollint) > $lib($connid,pollmax)} {
-	    set lib($connid,pollint) $lib($connid,pollmax)
+	set lib(pollint) [expr $lib(pollint) * 11 / 10]
+	if {$lib(pollint) > $lib(pollmax)} {
+	    set lib(pollint) $lib(pollmax)
 	}
     }
 
     inmsg $connid $inmsg
 
-    switch -- $lib($connid,pollwait) {
+    switch -- $lib(httpwait) {
 	waiting { set_httpwait $connid disconnecting }
 	polling { set_httpwait $connid connected }
     }
 }
 
 proc transport::http_poll::poll {connid what} {
-    variable lib
+    variable $connid
+    upvar 0 $connid lib
 
     ::HTTP_LOG "poll ($connid): '$what'"
 
-    if {![info exists lib($connid,pollwait)]} {
+    if {![info exists lib(httpwait)]} {
 	set_httpwait $connid disconnected
 	return
     }
 
-    append lib($connid,polloutdata) [encoding convertto utf-8 $what]
-    switch -- $lib($connid,pollwait) {
+    append lib(httpoutdata) [encoding convertto utf-8 $what]
+    switch -- $lib(httpwait) {
 	disconnected {
 	    ::HTTP_LOG "poll ($connid): DISCONNECTED"
 	    return
 	}
 	disconnecting {
 	    ::HTTP_LOG "poll ($connid): DISCONNECTING"
-	    if {$lib($connid,polloutdata) == ""} {
+	    if {$lib(httpoutdata) == ""} {
 		set_httpwait $connid disconnected
 		return
 	    }
@@ -601,39 +652,38 @@
 	waiting -
 	polling {
 	    ::HTTP_LOG "poll ($connid): RESCHEDULING"
-	    if {[info exists lib($connid,pollid)]} {
-		after cancel $lib($connid,pollid)
+	    if {[info exists lib(httpid)]} {
+		after cancel $lib(httpid)
 	    }
-	    ::HTTP_LOG "poll ($connid): $lib($connid,pollint)"
-	    set lib($connid,pollid) \
-		[after $lib($connid,pollint) \
+	    ::HTTP_LOG "poll ($connid): $lib(pollint)"
+	    set lib(httpid) \
+		[after $lib(pollint) \
 		       [list [namespace current]::poll $connid ""]]
 	    return
 	}
     }
 
-    if {$lib($connid,pollusekeys)} {
+    if {$lib(httpusekeys)} {
 	# regenerate 
-	set firstkey [lindex $lib($connid,pollkeys) end]
+	set firstkey [lindex $lib(httpkeys) end]
 	set secondkey ""
-	if { [llength $lib($connid,pollkeys)] == 1} {
+	if {[llength $lib(httpkeys)] == 1} {
 	    ::HTTP_LOG "poll ($connid): regenerating keys"
-	    set lib($connid,pollkeys) {}
+	    set lib(httpkeys) {}
 	    set seed [rand 1000000000]
 	    set oldkey $seed
-	    set key_count $lib($connid,pollnumkeys)
-	    while { $key_count } {
+	    set key_count $lib(httpnumkeys)
+	    while {$key_count > 0} {
 		set nextkey [base64::encode [hex_decode [sha1::sha1 $oldkey]]]
 		# skip the initial seed
-		lappend lib($connid,pollkeys) $nextkey
+		lappend lib(httpkeys) $nextkey
 		set oldkey $nextkey
 		incr key_count -1
 	    }
-	    set secondkey [lindex $lib($connid,pollkeys) end]
+	    set secondkey [lindex $lib(httpkeys) end]
 	}
-	set l [llength $lib($connid,pollkeys)]
-	set lib($connid,pollkeys) \
-	    [lrange $lib($connid,pollkeys) 0 [expr {$l - 2}]]
+	set l [llength $lib(httpkeys)]
+	set lib(httpkeys) [lrange $lib(httpkeys) 0 [expr {$l - 2}]]
 
 	if {[string length $firstkey]} {
 	    set firstkey ";$firstkey"
@@ -643,11 +693,11 @@
             set secondkey ";$secondkey"
         }
 
-        set query "$lib($connid,pollseskey)$firstkey$secondkey,$lib($connid,polloutdata)"
+        set query "$lib(httpseskey)$firstkey$secondkey,$lib(httpoutdata)"
     } else {
-        set query "$lib($connid,pollseskey),$lib($connid,polloutdata)"
+        set query "$lib(httpseskey),$lib(httpoutdata)"
     }
-    switch -- $lib($connid,pollwait) {
+    switch -- $lib(httpwait) {
 	disconnecting { set_httpwait $connid waiting }
 	default { set_httpwait $connid polling }
     }
@@ -655,28 +705,29 @@
 
     get_url $connid 0 $query
 
-    set lib($connid,polloutdata) ""
+    set lib(httpoutdata) ""
 
-    if {[info exists lib($connid,pollid)]} {
-        after cancel $lib($connid,pollid)
+    if {[info exists lib(httpid)]} {
+        after cancel $lib(httpid)
     }
-    ::HTTP_LOG "poll ($connid): $lib($connid,pollint)"
-    set lib($connid,pollid) \
-	[after $lib($connid,pollint) \
-	       [list [namespace current]::poll $connid ""]]
+    ::HTTP_LOG "poll ($connid): $lib(pollint)"
+    set lib(httpid) \
+	[after $lib(pollint) [list [namespace current]::poll $connid ""]]
 }
 
 proc transport::http_poll::get_url {connid try query} {
-    variable lib
+    variable http_version
+    variable $connid
+    upvar 0 $connid lib
 
-    set get_url_args [list -headers $lib($connid,proxyauth)]
-    if {[package vcompare 2.3.3 $lib(http_version)] <= 0} {
+    set get_url_args [list -headers $lib(proxyauth)]
+    if {[package vcompare 2.3.3 $http_version] <= 0} {
 	lappend get_url_args -binary 1
     }
 
-    eval [list ::http::geturl $lib($connid,pollurl) -query $query \
+    eval [list ::http::geturl $lib(httpurl) -query $query \
 	       -command [list [namespace current]::process_httpreply $connid $try $query] \
-	       -timeout $lib($connid,polltimeout)] $get_url_args
+	       -timeout $lib(polltimeout)] $get_url_args
 }
 
 proc transport::http_poll::hex_decode {hexstring} {

Modified: trunk/tkabber/jabberlib-tclxml/wrapper.tcl
===================================================================
--- trunk/tkabber/jabberlib-tclxml/wrapper.tcl	2007-10-05 17:25:18 UTC (rev 1241)
+++ trunk/tkabber/jabberlib-tclxml/wrapper.tcl	2007-10-05 19:37:56 UTC (rev 1242)
@@ -53,8 +53,8 @@
 
     set wrapper($id,parser) \
 	[::xml::parser "_parser_$id" \
+	     -namespace \
 	     -final 0 \
-	     -reportempty 1 \
 	     -elementstartcommand  "[namespace current]::wrapper:elementstart [list $id]" \
 	     -elementendcommand    "[namespace current]::wrapper:elementend [list $id]" \
 	     -characterdatacommand "[namespace current]::wrapper:chdata [list $id]"
@@ -99,8 +99,8 @@
     }
 
     $wrapper($id,parser) reset
-    $wrapper($id,parser) configure -final 0 \
-	-reportempty 1 \
+    $wrapper($id,parser) configure \
+	-final 0 \
 	-elementstartcommand  "[namespace current]::wrapper:elementstart [list $id]" \
 	-elementendcommand    "[namespace current]::wrapper:elementend [list $id]" \
 	-characterdatacommand "[namespace current]::wrapper:chdata [list $id]" 
@@ -122,6 +122,12 @@
 	}
     }
 
+    set idx [string last : $tagname]
+    if {$idx >= 0} {
+	lappend varlist xmlns [string range $tagname 0 [expr {$idx - 1}]]
+	set tagname [string range $tagname [expr {$idx + 1}] end]
+    }
+
     if {$wrapper($id,stack) == {}} {
 	set wrapper($id,level1tag) $tagname
 	uplevel #0 "$wrapper($id,streamstartcmd) [list $varlist]"

Modified: trunk/tkabber/login.tcl
===================================================================
--- trunk/tkabber/login.tcl	2007-10-05 17:25:18 UTC (rev 1241)
+++ trunk/tkabber/login.tcl	2007-10-05 19:37:56 UTC (rev 1242)
@@ -172,10 +172,10 @@
 	[::msgcat::mc "Timeout for waiting for HTTP poll responses (if set\
 to zero, Tkabber will wait forever)."] \
 	-group Login -type integer
-    custom::defvar loginconf(pollmin) 3000 \
+    custom::defvar loginconf(pollmin) 6000 \
 	[::msgcat::mc "Minimum poll interval."] \
 	-group Login -type integer
-    custom::defvar loginconf(pollmax) 30000 \
+    custom::defvar loginconf(pollmax) 60000 \
 	[::msgcat::mc "Maximum poll interval."] \
 	-group Login -type integer
 }
@@ -370,9 +370,9 @@
 				-pollint $lc(pollmin) \
 				-pollmin $lc(pollmin) \
 				-pollmax $lc(pollmax) \
-				-pollurl $url \
-				-pollusekeys $lc(usepollkeys) \
-				-pollnumkeys $lc(numberofpollkeys)] $args]
+				-httpurl $url \
+				-httpusekeys $lc(usepollkeys) \
+				-httpnumkeys $lc(numberofpollkeys)] $args]
     } else {
 	if {$have_compress && $lc(stream_options) == "compressed"} {
 	    lappend args -usecompression 1

Copied: trunk/tkabber/tclxml (from rev 1219, trunk/tkabber/jabberlib-tclxml/tclxml)

Modified: trunk/tkabber/tclxml/xml__tcl.tcl
===================================================================
--- trunk/tkabber/jabberlib-tclxml/tclxml/xml__tcl.tcl	2007-09-03 10:47:14 UTC (rev 1219)
+++ trunk/tkabber/tclxml/xml__tcl.tcl	2007-10-05 19:37:56 UTC (rev 1242)
@@ -136,7 +136,7 @@
 # Results:
 #	Returns object name.  Parser instance created.
 
-proc xml::parser args {
+proc xml::parser {args} {
     variable classes
     variable default
 
@@ -152,6 +152,11 @@
 	    set parserName [lindex $args 0]
 	    set args [lrange $args 1 end]
 	}
+
+	# consume first -namespace if any
+	if {[string equal [lindex $args 0] "-namespace"]} {
+	    set args [lrange $args 1 end]
+	}
     }
 
     array set options [list \



More information about the Tkabber-dev mailing list