[Tkabber-dev] r2025 - in trunk/tkabber: . doc plugins/iq

tkabber-svn at jabber.ru tkabber-svn at jabber.ru
Wed Dec 25 13:04:47 MSK 2013


Author: sergei
Date: 2013-12-25 13:04:46 +0400 (Wed, 25 Dec 2013)
New Revision: 2025

Modified:
   trunk/tkabber/ChangeLog
   trunk/tkabber/README
   trunk/tkabber/doc/tkabber.html
   trunk/tkabber/doc/tkabber.xml
   trunk/tkabber/plugins/iq/version.tcl
   trunk/tkabber/proxy.tcl
   trunk/tkabber/tkabber-remote.tcl
Log:
	* plugins/iq/version.tcl: Recognize Windows 8.1 (as Windows NT 6.3).

	* README, doc/tkabber.html, doc/tkabber.xml: Added small notes on 3rd
	  party plugins repository and about BOSH connection method.

	* proxy.tcl: Added GUI for choosing proxy profiles defined in the
	  config file. Implemented remote proxy profile changing via the
	  tkabber-remote script.

	* tkabber-remote.tcl: Added a small example with list-commands to the
	  usage message. Report PIDs of responded Tkabber processes.


Modified: trunk/tkabber/ChangeLog
===================================================================
--- trunk/tkabber/ChangeLog	2013-12-23 19:20:19 UTC (rev 2024)
+++ trunk/tkabber/ChangeLog	2013-12-25 09:04:46 UTC (rev 2025)
@@ -1,3 +1,17 @@
+2013-12-25  Sergei Golovan  <sgolovan at nes.ru>
+
+	* plugins/iq/version.tcl: Recognize Windows 8.1 (as Windows NT 6.3).
+
+	* README, doc/tkabber.html, doc/tkabber.xml: Added small notes on 3rd
+	  party plugins repository and about BOSH connection method.
+
+	* proxy.tcl: Added GUI for choosing proxy profiles defined in the
+	  config file. Implemented remote proxy profile changing via the
+	  tkabber-remote script.
+
+	* tkabber-remote.tcl: Added a small example with list-commands to the
+	  usage message. Report PIDs of responded Tkabber processes.
+
 2013-12-24  Sergei Golovan  <sgolovan at nes.ru>
 
 	* README, doc/tkabber.html, doc/tkabber.xml, ifacetk/iface.tcl,

Modified: trunk/tkabber/README
===================================================================
--- trunk/tkabber/README	2013-12-23 19:20:19 UTC (rev 2024)
+++ trunk/tkabber/README	2013-12-25 09:04:46 UTC (rev 2025)
@@ -62,7 +62,7 @@
    1.  Features . . . . . . . . . . . . . . . . . . . . . . . . . . .  4
    2.  Requirements . . . . . . . . . . . . . . . . . . . . . . . . .  7
    3.  Download, install and run  . . . . . . . . . . . . . . . . . . 10
-   4.  Upgrading from version 0.11.1  . . . . . . . . . . . . . . . . 12
+   4.  Upgrading from version 0.11.0 or 0.11.1  . . . . . . . . . . . 12
      4.1.  External plugins . . . . . . . . . . . . . . . . . . . . . 12
      4.2.  Configuration options  . . . . . . . . . . . . . . . . . . 12
    5.  Upgrading from version 0.10.0  . . . . . . . . . . . . . . . . 13
@@ -102,9 +102,9 @@
        7.2.12. The Ispell Module  . . . . . . . . . . . . . . . . . . 34
        7.2.13. The Stream Initiation Module . . . . . . . . . . . . . 34
        7.2.14. The Logger Module  . . . . . . . . . . . . . . . . . . 35
-       7.2.15. The Login Module . . . . . . . . . . . . . . . . . . . 35
-       7.2.16. The Message Module . . . . . . . . . . . . . . . . . . 36
-       7.2.17. The Raw XML Input Module . . . . . . . . . . . . . . . 36
+       7.2.15. The Proxy Module . . . . . . . . . . . . . . . . . . . 35
+       7.2.16. The Login Module . . . . . . . . . . . . . . . . . . . 35
+       7.2.17. The Message Module . . . . . . . . . . . . . . . . . . 36
 
 
 
@@ -113,12 +113,13 @@
                                Tkabber 1.0                  January 2014
 
 
-       7.2.18. The Roster Module  . . . . . . . . . . . . . . . . . . 36
-       7.2.19. The Sound Module . . . . . . . . . . . . . . . . . . . 37
+       7.2.18. The Raw XML Input Module . . . . . . . . . . . . . . . 36
+       7.2.19. The Roster Module  . . . . . . . . . . . . . . . . . . 37
+       7.2.20. The Sound Module . . . . . . . . . . . . . . . . . . . 37
      7.3.  Menu-load  . . . . . . . . . . . . . . . . . . . . . . . . 39
        7.3.1.  The Avatar Module  . . . . . . . . . . . . . . . . . . 39
-       7.3.2.  The Browser Module . . . . . . . . . . . . . . . . . . 39
-       7.3.3.  The Groupchat Module . . . . . . . . . . . . . . . . . 39
+       7.3.2.  The Browser Module . . . . . . . . . . . . . . . . . . 40
+       7.3.3.  The Groupchat Module . . . . . . . . . . . . . . . . . 40
        7.3.4.  The Login Module . . . . . . . . . . . . . . . . . . . 40
        7.3.5.  The Message Module . . . . . . . . . . . . . . . . . . 40
        7.3.6.  The Presence Module  . . . . . . . . . . . . . . . . . 40
@@ -163,7 +164,6 @@
 
 
 
-
 Shchepin, et al.                                                [Page 3]
 

                                Tkabber 1.0                  January 2014
@@ -521,6 +521,12 @@
 
    svn co https://svn.xmpp.ru/repos/tkabber/trunk/tkabber-plugins
 
+   And if you want to try unofficial plugins, then execute
+
+   svn co https://svn.xmpp.ru/repos/tkabber-3rd-party/trunk/plugins
+
+   They usually include short readme with info on how to use them.
+
    If you use the Debian GNU/Linux distribution, you may want to get all
    required packages by using _apt_.  Just execute
 
@@ -544,23 +550,24 @@
    do -- most folks prefer to simply copy the distribution directory to
    somewhere in their home directory.
 
-   From the shell, you can invoke _Tkabber_ as:
 
-   % tkabber.tcl
 
-   whilst on a windowing system, simply double-click on that file or a
-   short-cut to it.
 
 
 
 
-
-
 Shchepin, et al.                                               [Page 10]
 

                                Tkabber 1.0                  January 2014
 
 
+   From the shell, you can invoke _Tkabber_ as:
+
+   % tkabber.tcl
+
+   whilst on a windowing system, simply double-click on that file or a
+   short-cut to it.
+
    If you're a Tcl/Tk guru and have installed _tkcon_, then you may want
    to invoke _Tkabber_ as:
 
@@ -569,7 +576,9 @@
    _Tkabber_ will automatically know that it's running under _tkcon_ and
    will start by hiding the _Tk_ console window.  Look under the
    "Services->Debug tools" menu to find the checkbutton to show the
-   console.
+   console.  Note that if _Tkcon_ is installed as a Tcl/Tk package then
+   _Tkabber_ will add corresponding menu item under _Services->Debug
+   tools_ automatically.
 
    Also you can setup _Tkabber_ as handler for XMPP/Jabber MIME
    Type [20].  For this you need to set hanler for
@@ -603,21 +612,12 @@
 
 
 
-
-
-
-
-
-
-
-
-
 Shchepin, et al.                                               [Page 11]
 

                                Tkabber 1.0                  January 2014
 
 
-4.  Upgrading from version 0.11.1
+4.  Upgrading from version 0.11.0 or 0.11.1
 
    When upgrading _Tkabber_ from version 0.11.1 or earlier note that its
    plugin interface and several configuration options have been changed.
@@ -625,7 +625,7 @@
 4.1.  External plugins
 
    There are incompatible changes in Tkabber internals, which break the
-   old plugins.  So, you'll have to upgrade them as well.  If a plugin's
+   old plugins.  So, you'll have to upgrade them as well.  If a plugin
    author haven't released a compatible with _Tkabber_ 1.0 version then
    you'll have to disable that plugin.
 
@@ -675,9 +675,9 @@
 
 5.  Upgrading from version 0.10.0
 
-   When upgrading _Tkabber_ from version 0.10.0 or earlier note that
-   several configuration options and user interface elements have been
-   changed.
+   When upgrading _Tkabber_ from version 0.10.0 or earlier the above
+   section on plugins (Section 4.1) and also note that several
+   configuration options and user interface elements have been changed.
 
 5.1.  Configuration options
 
@@ -899,8 +899,8 @@
 
 6.  Upgrading from version 0.9.9
 
-   When upgrading _Tkabber_ from version 0.9.9 or earlier note the
-   following:
+   When upgrading _Tkabber_ from version 0.9.9 or earlier read the above
+   section (Section 5) and also note the following:
 
    o  On Macintosh or Microsoft Windows _Tkabber_ will copy it's
       configuration directory to a new location (see the next section
@@ -1917,8 +1917,10 @@
        set logger::options(log_chat)      1
        set logger::options(log_groupchat) 1
 
-7.2.15.  The Login Module
+7.2.15.  The Proxy Module
 
+7.2.16.  The Login Module
+
    The first task is to initialize the configuration defaults for the
    _login_ module.  As you can see above, the global array "loginconf"
    has a whole bunch of elements, e.g., "user", "password", and so on.
@@ -1950,9 +1952,7 @@
    "loginconf(altport)" options (do not forget to set
    "loginconf(usealtserver)" to "1").
 
-   Another option is to use _HTTP_-polling connect method (if your
-   server supports it) and tunnel _XMPP_ traffic through _HTTP_.  To
-   enable _HTTP_-polling set "loginconf(usehttppoll)" to "1". _Tkabber_
+   Another option is to use _BOSH_ (XEP-0124 and XEP-0206) connect
 
 
 
@@ -1961,8 +1961,17 @@
                                Tkabber 1.0                  January 2014
 
 
+   method (if your server supports it) and tunnel _XMPP_ traffic through
+   _HTTP_.  To enable _BOSH_ set "loginconf(usebosh)" to "1". _Tkabber_
    then tries to find connect _URL_ using _TXT_ record in _DNS_ (see
    XEP-0156).  You can specify _URL_ manually by setting
+   "loginconf(boshurl)".
+
+   And another option is to use _HTTP_-polling connect method (if your
+   server supports it) and tunnel _XMPP_ traffic through _HTTP_.  To
+   enable _HTTP_-polling set "loginconf(usehttppoll)" to "1". _Tkabber_
+   then tries to find connect _URL_ using _TXT_ record in _DNS_ (see
+   XEP-0156).  You can specify _URL_ manually by setting
    "loginconf(pollurl)".
 
    This collection of elements, which is termed a login profile, is what
@@ -1986,7 +1995,7 @@
    Default value for "autologin" is "0".  In this case _Tkabber_ shows
    login dialog.
 
-7.2.16.  The Message Module
+7.2.17.  The Message Module
 
    By default, when you restart _Tkabber_ it won't remember the
    headlines you received.  If you want _Tkabber_ to remember headlines
@@ -1996,27 +2005,27 @@
    window.  If you want _Tkabber_ to use a seperate window for each
    headline source, set "message::options(headlines,multiple)" to "1".
 
-7.2.17.  The Raw XML Input Module
+7.2.18.  The Raw XML Input Module
 
    With this module you can monitor incoming/outgoing traffic from
    connection to server and send custom XML stanzas.  Also you can
+
+
+
+Shchepin, et al.                                               [Page 36]
+

+                               Tkabber 1.0                  January 2014
+
+
    switch on "pretty print" option to see incoming and outgoing XML
    stanzas pretty printed.  Note, that with this option they may be
    drawed incorrectly, e.g. for XHTML tags.  Also you can set
    indentation level via "indent" option.
 
-7.2.18.  The Roster Module
+7.2.19.  The Roster Module
 
    By default, your entire roster is shown, even those items that aren't
    online.  The variable called "roster::show_only_online" controls
-
-
-
-Shchepin, et al.                                               [Page 36]
-

-                               Tkabber 1.0                  January 2014
-
-
    this.
 
    Similarly by default, each item in every category is shown in the
@@ -2031,7 +2040,7 @@
    "friend at other.host" and "friend at another.host".  You can also disable
    all aliases by setting "roster::use_aliases" to "0".
 
-7.2.19.  The Sound Module
+7.2.20.  The Sound Module
 
    _Tkabber_ can play sounds on some events.  It can use for this
    _snack_ library or external program that can play _WAV_ files.  Sound
@@ -2055,24 +2064,22 @@
    set sound::options(mute_groupchat_delayed) 1
    set sound::options(mute_chat_delayed)      0
 
-   If you want to use external program for playing sounds and possibly
-   this program's options, then also add something like this (these
-   options are suitable for Linux users with ALSA installed):
 
-   set sound::options(external_play_program) /usr/bin/aplay
-   set sound::options(external_play_program_options) -q
 
 
 
-
-
-
-
 Shchepin, et al.                                               [Page 37]
 

                                Tkabber 1.0                  January 2014
 
 
+   If you want to use external program for playing sounds and possibly
+   this program's options, then also add something like this (these
+   options are suitable for Linux users with ALSA installed):
+
+   set sound::options(external_play_program) /usr/bin/aplay
+   set sound::options(external_play_program_options) -q
+
    You can also set minimal interval (in milliseconds) between playing
    different sounds.
    set sound::options(delay) 200
@@ -2108,14 +2115,7 @@
       playing when you receive highlighted (usually personally
       addressed) groupchat message from another user.
 
-   If you want to disable sound notification for some of the events,
-   then you can add line like this:
 
-   set sound::options(connected_sound)                     ""
-   set sound::options(presence_available_sound)            ""
-   set sound::options(presence_unavailable_sound)          ""
-   set sound::options(groupchat_server_message_sound)      ""
-   set sound::options(groupchat_their_message_to_me_sound) ""
 
 
 
@@ -2129,6 +2129,15 @@
                                Tkabber 1.0                  January 2014
 
 
+   If you want to disable sound notification for some of the events,
+   then you can add line like this:
+
+   set sound::options(connected_sound)                     ""
+   set sound::options(presence_available_sound)            ""
+   set sound::options(presence_unavailable_sound)          ""
+   set sound::options(groupchat_server_message_sound)      ""
+   set sound::options(groupchat_their_message_to_me_sound) ""
+
 7.3.  Menu-load
 
    After _Tkabber_ invokes your "postload" procedure, it starts building
@@ -2167,6 +2176,15 @@
    The procedure called "avatar::store_on_server" stores your avatar on
    the server.
 
+
+
+
+
+Shchepin, et al.                                               [Page 39]
+

+                               Tkabber 1.0                  January 2014
+
+
 7.3.2.  The Browser Module
 
    The procedure called "browser::open" opens a new browser window.
@@ -2178,13 +2196,6 @@
    called "join_group_dialog" displays a dialog window when you want to
    join a groupchat.
 
-
-
-Shchepin, et al.                                               [Page 39]
-

-                               Tkabber 1.0                  January 2014
-
-
 7.3.4.  The Login Module
 
    The procedure called "show_login_dialog" displays a dialog window
@@ -2222,6 +2233,14 @@
        userinfo::open \
            ${loginconf(user)}@$loginconf(server)/$loginconf(resource) 1
 
+
+
+
+Shchepin, et al.                                               [Page 40]
+

+                               Tkabber 1.0                  January 2014
+
+
    There are also two variables that you can use to set your own
    presence: "userstatus" and "textstatus".  The first variable takes
    one of five values:
@@ -2232,15 +2251,6 @@
 
    o  away;
 
-
-
-
-
-Shchepin, et al.                                               [Page 40]
-

-                               Tkabber 1.0                  January 2014
-
-
    o  xa;
 
    o  dnd; or,
@@ -2282,16 +2292,6 @@
 
 
 
-
-
-
-
-
-
-
-
-
-
 Shchepin, et al.                                               [Page 41]
 

                                Tkabber 1.0                  January 2014
@@ -2655,6 +2655,12 @@
 
    o  All windows of the "Chats history" tool.
 
+   o  Headlines window.
+
+   o  Raw XML log window.
+
+   o  MUC affiliations and roles lists.
+
    Searching may be customized using the settings located under the
    _Plugins --> Search_ group of the _Customize_ window.  These setings
    are:
@@ -2675,20 +2681,20 @@
 
          +  _*_ matches zero or more characters;
 
-         +  _?_ matches exactly one character;
 
-         +  _[_ and _]_ define character classes, e.g., "[A-Z]" will
-            match any character in the series "A", "B", ...  "Z".
 
-         The full syntax is described in Tcl string manual page.  That
 
-
-
 Shchepin, et al.                                               [Page 48]
 

                                Tkabber 1.0                  January 2014
 
 
+         +  _?_ matches exactly one character;
+
+         +  _[_ and _]_ define character classes, e.g., "[A-Z]" will
+            match any character in the series "A", "B", ...  "Z".
+
+         The full syntax is described in Tcl string manual page.  That
          is, this search mode can be convenient for those who want more
          general yet simple approach to searching and is familiar with
          the "shell globbing" concept found in Unix shells.
@@ -2734,12 +2740,6 @@
 
 
 
-
-
-
-
-
-
 Shchepin, et al.                                               [Page 49]
 

                                Tkabber 1.0                  January 2014
@@ -2879,12 +2879,11 @@
 
    o  Added metacontacts (XEP-0209) support
 
-   o  Implemented multiple proxy profiles (in config file only, not in
-      GUI)
+   o  Implemented multiple proxy profiles
 
    o  Implemented remote controlling from a locally executed script
 
-   o  Added new plugins: floatingcontact, notify-send, poker
+   o  Added new plugins: floatingcontact, poker
 
    o  Rewritten most plugins to support disabling and unloading on the
       fly
@@ -2908,6 +2907,7 @@
 
 
 
+
 Shchepin, et al.                                               [Page 52]
 

                                Tkabber 1.0                  January 2014

Modified: trunk/tkabber/doc/tkabber.html
===================================================================
--- trunk/tkabber/doc/tkabber.html	2013-12-23 19:20:19 UTC (rev 2024)
+++ trunk/tkabber/doc/tkabber.html	2013-12-25 09:04:46 UTC (rev 2025)
@@ -171,7 +171,7 @@
 <a href="#s.download">3.</a> 
 Download, install and run<br />
 <a href="#s.upgrading0.11.1">4.</a> 
-Upgrading from version 0.11.1<br />
+Upgrading from version 0.11.0 or 0.11.1<br />
     <a href="#ss.upgrading0.11.1.plugins">4.1.</a> 
 External plugins<br />
     <a href="#ss.upgrading0.11.1.conf">4.2.</a> 
@@ -250,15 +250,17 @@
 The Stream Initiation Module<br />
         <a href="#s.postload-log">7.2.14.</a> 
 The Logger Module<br />
-        <a href="#s.postload-login">7.2.15.</a> 
+        <a href="#s.postload-proxy">7.2.15.</a> 
+The Proxy Module<br />
+        <a href="#s.postload-login">7.2.16.</a> 
 The Login Module<br />
-        <a href="#s.postload-message">7.2.16.</a> 
+        <a href="#s.postload-message">7.2.17.</a> 
 The Message Module<br />
-        <a href="#s.postload-rawxml">7.2.17.</a> 
+        <a href="#s.postload-rawxml">7.2.18.</a> 
 The Raw XML Input Module<br />
-        <a href="#s.postload-roster">7.2.18.</a> 
+        <a href="#s.postload-roster">7.2.19.</a> 
 The Roster Module<br />
-        <a href="#s.postload-sound">7.2.19.</a> 
+        <a href="#s.postload-sound">7.2.20.</a> 
 The Sound Module<br />
     <a href="#s.menuload">7.3.</a> 
 Menu-load<br />
@@ -716,6 +718,12 @@
 </p><div style='display: table; width: 0; margin-left: 3em; margin-right: auto'><pre>
 svn co https://svn.xmpp.ru/repos/tkabber/trunk/tkabber-plugins
 </pre></div>
+<p>And if you want to try unofficial plugins, then execute
+</p><div style='display: table; width: 0; margin-left: 3em; margin-right: auto'><pre>
+svn co https://svn.xmpp.ru/repos/tkabber-3rd-party/trunk/plugins
+</pre></div>
+<p>They usually include short readme with info on how to use them.
+</p>
 <p>If you use the Debian GNU/Linux distribution, you may want to get 
 all required packages by using <em>apt</em>. 
 Just execute
@@ -758,7 +766,8 @@
 <em>Tkabber</em> will automatically know that it's running under <em>tkcon</em>
 and will start by hiding the <em>Tk</em> console window.
 Look under the <tt>Services->Debug tools</tt> menu to find the checkbutton to show the
-console.
+console. Note that if <em>Tkcon</em> is installed as a Tcl/Tk package then <em>Tkabber</em> will
+add corresponding menu item under <em>Services->Debug tools</em> automatically.
 </p>
 <p>
             Also you can setup <em>Tkabber</em> as handler for
@@ -772,7 +781,7 @@
 <a name="s.upgrading0.11.1"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
 <a name="rfc.section.4"></a><h3>4. 
-Upgrading from version 0.11.1</h3>
+Upgrading from version 0.11.0 or 0.11.1</h3>
 
 <p>When upgrading <em>Tkabber</em> from version 0.11.1 or earlier note that
 its plugin interface and several configuration options have been changed.
@@ -783,7 +792,7 @@
 External plugins</h3>
 
 <p>There are incompatible changes in Tkabber internals, which break the old
-plugins. So, you'll have to upgrade them as well. If a plugin's author haven't
+plugins. So, you'll have to upgrade them as well. If a plugin author haven't
 released a compatible with <em>Tkabber</em> 1.0 version then you'll have
 to disable that plugin.
 </p>
@@ -799,7 +808,9 @@
 <a name="rfc.section.5"></a><h3>5. 
 Upgrading from version 0.10.0</h3>
 
-<p>When upgrading <em>Tkabber</em> from version 0.10.0 or earlier note that
+<p>When upgrading <em>Tkabber</em> from version 0.10.0 or earlier
+<a class='info' href='#ss.upgrading0.11.1.plugins'>the above section on plugins<span> (</span><span class='info'>External plugins</span><span>)</span></a>
+and also note that
 several configuration options and user interface elements have been changed.
 </p>
 <a name="ss.upgrading0.10.0.conf"></a><br /><hr />
@@ -1041,7 +1052,8 @@
 <a name="rfc.section.6"></a><h3>6. 
 Upgrading from version 0.9.9</h3>
 
-<p>When upgrading <em>Tkabber</em> from version 0.9.9 or earlier note the following:
+<p>When upgrading <em>Tkabber</em> from version 0.9.9 or earlier read
+<a class='info' href='#s.upgrading0.10.0'>the above section<span> (</span><span class='info'>Upgrading from version 0.10.0</span><span>)</span></a> and also note the following:
 </p>
 <ul class="text">
 <li>On Macintosh or Microsoft Windows <em>Tkabber</em> will copy
@@ -2069,9 +2081,14 @@
     set logger::options(log_chat)      1
     set logger::options(log_groupchat) 1
 </pre></div>
+<a name="s.postload-proxy"></a><br /><hr />
+<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
+<a name="rfc.section.7.2.15"></a><h3>7.2.15. 
+The Proxy Module</h3>
+
 <a name="s.postload-login"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
-<a name="rfc.section.7.2.15"></a><h3>7.2.15. 
+<a name="rfc.section.7.2.16"></a><h3>7.2.16. 
 The Login Module</h3>
 
 <p>The first task is to initialize the configuration defaults for the
@@ -2113,8 +2130,16 @@
 <tt>loginconf(altport)</tt> options (do not forget to set
 <tt>loginconf(usealtserver)</tt> to <tt>1</tt>).
 </p>
-<p>Another option is to use <em>HTTP</em>-polling connect method (if your server
+<p>Another option is to use <em>BOSH</em> (XEP-0124 and XEP-0206) connect method (if your server
 supports it) and tunnel <em>XMPP</em> traffic through <em>HTTP</em>.
+To enable <em>BOSH</em> set <tt>loginconf(usebosh)</tt>
+to <tt>1</tt>. <em>Tkabber</em> then tries to find connect
+<em>URL</em> using <em>TXT</em> record in <em>DNS</em> (see XEP-0156).
+You can specify <em>URL</em> manually by setting
+<tt>loginconf(boshurl)</tt>.
+</p>
+<p>And another option is to use <em>HTTP</em>-polling connect method (if your server
+supports it) and tunnel <em>XMPP</em> traffic through <em>HTTP</em>.
 To enable <em>HTTP</em>-polling set <tt>loginconf(usehttppoll)</tt>
 to <tt>1</tt>. <em>Tkabber</em> then tries to find connect
 <em>URL</em> using <em>TXT</em> record in <em>DNS</em> (see XEP-0156).
@@ -2158,7 +2183,7 @@
 </p>
 <a name="s.postload-message"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
-<a name="rfc.section.7.2.16"></a><h3>7.2.16. 
+<a name="rfc.section.7.2.17"></a><h3>7.2.17. 
 The Message Module</h3>
 
 <p>By default,
@@ -2175,7 +2200,7 @@
 </p>
 <a name="s.postload-rawxml"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
-<a name="rfc.section.7.2.17"></a><h3>7.2.17. 
+<a name="rfc.section.7.2.18"></a><h3>7.2.18. 
 The Raw XML Input Module</h3>
 
 <p>
@@ -2189,7 +2214,7 @@
 </p>
 <a name="s.postload-roster"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
-<a name="rfc.section.7.2.18"></a><h3>7.2.18. 
+<a name="rfc.section.7.2.19"></a><h3>7.2.19. 
 The Roster Module</h3>
 
 <p>
@@ -2220,7 +2245,7 @@
 </p>
 <a name="s.postload-sound"></a><br /><hr />
 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
-<a name="rfc.section.7.2.19"></a><h3>7.2.19. 
+<a name="rfc.section.7.2.20"></a><h3>7.2.20. 
 The Sound Module</h3>
 
 <p>
@@ -2856,6 +2881,12 @@
 </li>
 <li>All windows of the "Chats history" tool.
 </li>
+<li>Headlines window.
+</li>
+<li>Raw XML log window.
+</li>
+<li>MUC affiliations and roles lists.
+</li>
 </ul>
 
 <p>Searching may be customized using the settings located
@@ -2942,11 +2973,11 @@
 </li>
 <li>Added metacontacts (XEP-0209) support
 </li>
-<li>Implemented multiple proxy profiles (in config file only, not in GUI)
+<li>Implemented multiple proxy profiles
 </li>
 <li>Implemented remote controlling from a locally executed script
 </li>
-<li>Added new plugins: floatingcontact, notify-send, poker
+<li>Added new plugins: floatingcontact, poker
 </li>
 <li>Rewritten most plugins to support disabling and unloading on the fly
 </li>

Modified: trunk/tkabber/doc/tkabber.xml
===================================================================
--- trunk/tkabber/doc/tkabber.xml	2013-12-23 19:20:19 UTC (rev 2024)
+++ trunk/tkabber/doc/tkabber.xml	2013-12-25 09:04:46 UTC (rev 2025)
@@ -367,6 +367,13 @@
 ]]></artwork>
 </figure>
 <figure>
+<preamble>And if you want to try unofficial plugins, then execute</preamble>
+<artwork><![CDATA[
+svn co https://svn.xmpp.ru/repos/tkabber-3rd-party/trunk/plugins
+]]></artwork>
+<postamble>They usually include short readme with info on how to use them.</postamble>
+</figure>
+<figure>
 <preamble>If you use the Debian GNU/Linux distribution, you may want to get 
 all required packages by using <spanx>apt</spanx>. 
 Just execute</preamble>
@@ -413,7 +420,8 @@
 <spanx>Tkabber</spanx> will automatically know that it's running under <spanx>tkcon</spanx>
 and will start by hiding the <spanx>Tk</spanx> console window.
 Look under the <spanx style='verb'>Services->Debug tools</spanx> menu to find the checkbutton to show the
-console.</postamble>
+console. Note that if <spanx>Tkcon</spanx> is installed as a Tcl/Tk package then <spanx>Tkabber</spanx> will
+add corresponding menu item under <spanx>Services->Debug tools</spanx> automatically.</postamble>
 </figure>
         <figure>
           <preamble>
@@ -430,13 +438,13 @@
         </figure>
 </section>
 
-<section anchor='s.upgrading0.11.1' title='Upgrading from version 0.11.1'>
+<section anchor='s.upgrading0.11.1' title='Upgrading from version 0.11.0 or 0.11.1'>
 <t>When upgrading <spanx>Tkabber</spanx> from version 0.11.1 or earlier note that
 its plugin interface and several configuration options have been changed.</t>
 
 <section anchor='ss.upgrading0.11.1.plugins' title='External plugins'>
 <t>There are incompatible changes in Tkabber internals, which break the old
-plugins. So, you'll have to upgrade them as well. If a plugin's author haven't
+plugins. So, you'll have to upgrade them as well. If a plugin author haven't
 released a compatible with <spanx>Tkabber</spanx> 1.0 version then you'll have
 to disable that plugin.</t>
 </section>
@@ -447,7 +455,9 @@
 </section>
 
 <section anchor='s.upgrading0.10.0' title='Upgrading from version 0.10.0'>
-<t>When upgrading <spanx>Tkabber</spanx> from version 0.10.0 or earlier note that
+<t>When upgrading <spanx>Tkabber</spanx> from version 0.10.0 or earlier
+<xref target='ss.upgrading0.11.1.plugins'>the above section on plugins</xref>
+and also note that
 several configuration options and user interface elements have been changed.</t>
 
 <section anchor='ss.upgrading0.10.0.conf' title='Configuration options'>
@@ -634,7 +644,8 @@
 </section>
 
 <section anchor='s.upgrading0.9.9' title='Upgrading from version 0.9.9'>
-<t>When upgrading <spanx>Tkabber</spanx> from version 0.9.9 or earlier note the following:
+<t>When upgrading <spanx>Tkabber</spanx> from version 0.9.9 or earlier read
+<xref target='s.upgrading0.10.0'>the above section</xref> and also note the following:
 <list style='symbols'>
     <t>On Macintosh or Microsoft Windows <spanx>Tkabber</spanx> will copy
     it's configuration directory to a new location (see <xref target='s.configuration'>the next section</xref>
@@ -1629,6 +1640,9 @@
           </figure>
         </section>
 
+<section anchor='s.postload-proxy' title='The Proxy Module'>
+</section>
+
 <section anchor='s.postload-login' title='The Login Module'>
 <t>The first task is to initialize the configuration defaults for the
 <spanx>login</spanx> module.
@@ -1664,8 +1678,16 @@
 <spanx style='verb'>loginconf(altport)</spanx> options (do not forget to set
 <spanx style='verb'>loginconf(usealtserver)</spanx> to <spanx style='verb'>1</spanx>).</t>
 
-<t>Another option is to use <spanx>HTTP</spanx>-polling connect method (if your server
+<t>Another option is to use <spanx>BOSH</spanx> (XEP-0124 and XEP-0206) connect method (if your server
 supports it) and tunnel <spanx>XMPP</spanx> traffic through <spanx>HTTP</spanx>.
+To enable <spanx>BOSH</spanx> set <spanx style='verb'>loginconf(usebosh)</spanx>
+to <spanx style='verb'>1</spanx>. <spanx>Tkabber</spanx> then tries to find connect
+<spanx>URL</spanx> using <spanx>TXT</spanx> record in <spanx>DNS</spanx> (see XEP-0156).
+You can specify <spanx>URL</spanx> manually by setting
+<spanx style='verb'>loginconf(boshurl)</spanx>.</t>
+
+<t>And another option is to use <spanx>HTTP</spanx>-polling connect method (if your server
+supports it) and tunnel <spanx>XMPP</spanx> traffic through <spanx>HTTP</spanx>.
 To enable <spanx>HTTP</spanx>-polling set <spanx style='verb'>loginconf(usehttppoll)</spanx>
 to <spanx style='verb'>1</spanx>. <spanx>Tkabber</spanx> then tries to find connect
 <spanx>URL</spanx> using <spanx>TXT</spanx> record in <spanx>DNS</spanx> (see XEP-0156).
@@ -2382,6 +2404,9 @@
 <t>Service discovery window;</t>
 <t>Chat history logs;</t>
 <t>All windows of the "Chats history" tool.</t>
+<t>Headlines window.</t>
+<t>Raw XML log window.</t>
+<t>MUC affiliations and roles lists.</t>
 </list></t>
 
 <t>Searching may be customized using the settings located
@@ -2445,9 +2470,9 @@
             <t>Added user nicknames (XEP-0172) support.</t>
             <t>Updated the CAPTCHA forms (XEP-0158) support</t>
             <t>Added metacontacts (XEP-0209) support</t>
-            <t>Implemented multiple proxy profiles (in config file only, not in GUI)</t>
+            <t>Implemented multiple proxy profiles</t>
             <t>Implemented remote controlling from a locally executed script</t>
-            <t>Added new plugins: floatingcontact, notify-send, poker</t>
+            <t>Added new plugins: floatingcontact, poker</t>
             <t>Rewritten most plugins to support disabling and unloading on the fly</t>
             <t>A few interface enhancements (search in MUC affiliations lists, proxy management)</t>
             <t>Many fixes and enhancements</t>

Modified: trunk/tkabber/plugins/iq/version.tcl
===================================================================
--- trunk/tkabber/plugins/iq/version.tcl	2013-12-23 19:20:19 UTC (rev 2024)
+++ trunk/tkabber/plugins/iq/version.tcl	2013-12-25 09:04:46 UTC (rev 2025)
@@ -120,6 +120,7 @@
 		6.0 { return {Windows Vista} }
 		6.1 { return {Windows 7}     }
 		6.2 { return {Windows 8}     }
+		6.3 { return {Windows 8.1}   }
 		default {
 		    return [list $tcl_platform(os) $tcl_platform(osVersion)]
 		}

Modified: trunk/tkabber/proxy.tcl
===================================================================
--- trunk/tkabber/proxy.tcl	2013-12-23 19:20:19 UTC (rev 2024)
+++ trunk/tkabber/proxy.tcl	2013-12-25 09:04:46 UTC (rev 2025)
@@ -7,11 +7,15 @@
 
 ::http::config -proxyhost "" -proxyport "" -proxyfilter ""
 
-namespace eval proxy {
+namespace eval proxy {}
+
+proc proxy::serialize_profile {proxyconfvar} {
+    upvar #0 $proxyconfvar proxyconf
+
     set tproxies {}
     set hproxies {}
 
-    foreach {key varlist} [array get ::proxyconf] {
+    foreach {key varlist} [array get proxyconf] {
 	switch -- $key {
 	    tunnel -
 	    http {}
@@ -20,7 +24,7 @@
 	    }
 	}
 
-	foreach varname $::proxyconf($key) {
+	foreach varname $proxyconf($key) {
 	    upvar #0 $varname p
 	    if {![info exists p(type)] || \
 		    [lsearch -exact {http https socks4 socks5} $p(type)] < 0} {
@@ -64,9 +68,15 @@
     if {[llength $tproxies] > 0 || [llength $hproxies] > 0} {
 	# There are proxies defined in the config file
 
-	variable proxylist [list tunnels $tproxies http $hproxies]
+	return [list tunnels $tproxies http $hproxies]
+    } else {
+	return {tunnels {} http {}}
     }
+}
 
+namespace eval proxy {
+    variable proxylist [serialize_profile proxyconf]
+
     custom::defvar proxylist {tunnels {} http {}} \
 	[::msgcat::mc "Serialized array of proxy servers to connect via."] \
 	-type string -group Hidden
@@ -196,39 +206,88 @@
 	   -command [namespace code [list save_proxies $w]]
     $w add -text [::msgcat::mc "Cancel"] -command [list destroy $w]
 
-    set f [$w getframe]
-
     set hf [frame $w.hf]
     pack $hf -side bottom
 
+    set f [$w getframe]
     set nb [NoteBook $f.nb]
-
     set tunnels_page [$nb insert end tunnels_page -text [::msgcat::mc "Tunnel proxies"]]
-    set w1 [customize_frame $tunnels_page tunnels]
-
     set http_page [$nb insert end http_page -text [::msgcat::mc "HTTP proxies"]]
-    set w2 [customize_frame $http_page http]
 
-    $nb compute_size
-    $nb raise tunnels_page
-    grid $nb -row 0 -column 0 -sticky nswe
+    set n 1
+    while {[info exists ::proxyconf$n]} {incr n}
+    incr n -1
+
+    if {$n} {
+	menubutton $f.profiles -text [::msgcat::mc "Profiles"] \
+	    -relief $::tk_relief -menu $f.profiles.menu
+	set m [menu $f.profiles.menu -tearoff 0]
+	$m add command -label [::msgcat::mc "Default empty profile"] \
+	    -command [list [namespace current]::update_proxy_entries $hf $nb $tunnels_page $http_page default]
+	$m add command -label [::msgcat::mc "Profile from config file"] \
+	    -command [list [namespace current]::update_proxy_entries $hf $nb $tunnels_page $http_page config]
+	for {set i 1} {$i <= $n} {incr i} {
+	    if {[info exists ::proxyconf${i}(profile)]} {
+		set lab [set ::proxyconf${i}(profile)]
+	    } else {
+		set lab "[::msgcat::mc Profile] $i"
+	    }
+	    if {$i <= 10} {
+		set j [expr {$i % 10}]
+		$m add command -label $lab -accelerator "$::tk_modify-$j" \
+		    -command [list [namespace current]::update_proxy_entries $hf $nb $tunnels_page $http_page $i]
+		bind $w <Control-Key-$j> \
+		    [list [namespace current]::update_proxy_entries [double% $hf] [double% $nb] [double% $tunnels_page] [double% $http_page] $i]
+	    } else {
+		$m add command -label $lab \
+		    -command [list [namespace current]::update_proxy_entries $hf $nb $tunnels_page $http_page $i]
+	    }
+	}
+
+	grid $f.profiles -row 0 -column 0 -sticky ne
+    }
+
+    grid $nb -row 1 -column 0 -sticky nswe
     grid columnconfigure $f 0 -weight 1
     grid rowconfigure $f 0 -weight 1
 
+    fill_pages $hf $nb $tunnels_page $http_page $proxylist
+    $nb raise tunnels_page
+
+    $w draw
+}
+
+proc proxy::update_proxy_entries {hf nb tunnels_page http_page i} {
+    switch -- $i {
+	default {
+	    fill_pages $hf $nb $tunnels_page $http_page {tunnels {} http {}}
+	}
+	config {
+	    fill_pages $hf $nb $tunnels_page $http_page [serialize_profile proxyconf]
+	}
+	default {
+	    fill_pages $hf $nb $tunnels_page $http_page [serialize_profile proxyconf$i]
+	}
+    }
+}
+
+proc proxy::fill_pages {hf nb tunnels_page http_page proxies} {
+    set w1 [customize_frame $tunnels_page tunnels $proxies]
+    set w2 [customize_frame $http_page http $proxies]
+
+    $nb compute_size
+
     if {$w1 > $w2} {
 	$hf configure \
-	    -width [expr {$w1 + [winfo pixels $f 1c]}]
-    } else {
+	    -width [expr {$w1 + [winfo pixels $nb 1c]}]
+    } elseif {$w2 > 0} {
 	$hf configure \
-	    -width [expr {$w2 + [winfo pixels $f 1c]}]
+	    -width [expr {$w2 + [winfo pixels $nb 1c]}]
     }
-
-    $w draw
 }
 
-proc proxy::customize_frame {frame type} {
+proc proxy::customize_frame {frame type proxies} {
     variable data
-    variable proxylist
 
     switch -- $type {
 	tunnels {
@@ -242,8 +301,14 @@
 	}
     }
 
-    array set Proxy $proxylist
+    array set Proxy $proxies
 
+    set q 0
+    foreach path [winfo children $frame] {
+	destroy $path
+	set q 1
+    }
+
     set tools [frame $frame.tools]
     pack $tools -side bottom -fill x
     
@@ -264,7 +329,9 @@
 
     set data($type,counter) 0
 
-    add_proxy $f $type remove "" "" "" "" "" ""
+    if {!$q} {
+	add_proxy $f $type remove "" "" "" "" "" ""
+    }
 
     if {[info exists Proxy($type)]} {
 	foreach proxy $Proxy($type) {
@@ -284,10 +351,14 @@
 	}
     }
 
-    update idletasks
-    set w [winfo reqwidth $f]
+    if {!$q} {
+	update idletasks
+	set w [winfo reqwidth $f]
 
-    remove_proxy $f $type 1
+	remove_proxy $f $type 1
+    } else {
+	set w 0
+    }
 
     return $w
 }
@@ -469,7 +540,6 @@
     }
 }
 
-
 proc proxy::move_proxy_down {f type i} {
     variable data
 
@@ -484,7 +554,6 @@
     }
 }
 
-
 proc proxy::switch_proxies {f type i j} {
     variable data
 
@@ -583,3 +652,22 @@
     return {}
 }
 
+proc proxy::set_profile {profile} {
+    variable proxylist
+
+    set i 1
+    while {[info exists ::proxyconf$i]} {
+	if {[info exists ::proxyconf${i}(profile)] && [set ::proxyconf${i}(profile)] eq $profile} {
+	    set proxylist [serialize_profile proxyconf$i]
+	    return $profile
+	}
+	incr i
+    }
+    return -code error "Can't find proxy profile $profile"
+}
+
+proc proxy::register_remote_command {} {
+    ::plugins::comm::register_command set-proxy-profile [namespace current]::set_profile "profile"
+}
+
+hook::add postload_hook proxy::register_remote_command

Modified: trunk/tkabber/tkabber-remote.tcl
===================================================================
--- trunk/tkabber/tkabber-remote.tcl	2013-12-23 19:20:19 UTC (rev 2024)
+++ trunk/tkabber/tkabber-remote.tcl	2013-12-25 09:04:46 UTC (rev 2025)
@@ -14,8 +14,8 @@
     {command.secret	"Evaluate arguments as a command"}
 }
 
-set usage ":\ntkabber-remote \[options\] -eval script \[script\]\
-...\ntkabber-remote \[options\] -command command \[arg\]\
+set usage ":\ntkabber-remote ?options? -eval script ?script?\
+...\ntkabber-remote ?options? -command command ?arg?\
 ...\noptions:"
 
 if {[catch {
@@ -28,6 +28,7 @@
 switch -- [llength $argv] {
     0 {
 	puts stderr [::cmdline::usage $options $usage]
+	puts stderr "example:\n tkabber-remote -command list-commands"
 	exit 1
     }
     default {}
@@ -77,6 +78,7 @@
     if {$status1 > $status} {
 	set status $status1
     }
+    puts "PID [string range [file extension $file] 1 end]"
     puts [lindex $res 1]
 }
 



More information about the Tkabber-dev mailing list