[Tkabber-dev] r450 - in trunk/plugins: clienticons clienticons/pixmap tabbedcon

tkabber-svn at jabber.ru tkabber-svn at jabber.ru
Sat Jan 1 23:24:05 MSK 2011


Author: ancestor
Date: 2011-01-01 23:24:05 +0300 (Sat, 01 Jan 2011)
New Revision: 450

Added:
   trunk/plugins/clienticons/pixmap/leechcraft.png
Modified:
   trunk/plugins/clienticons/clienticons.tcl
   trunk/plugins/clienticons/pixmap/icondef.xml
   trunk/plugins/tabbedcon/tabbedcon.tcl
Log:
1) Support for leechcraft icon was added in clienticons.tcl.
1.2) Added definition for leechcraft icon in icondef.xml.
2) Refactoring in tabbedcon.tcl.


Modified: trunk/plugins/clienticons/clienticons.tcl
===================================================================
--- trunk/plugins/clienticons/clienticons.tcl	2010-12-29 17:56:20 UTC (rev 449)
+++ trunk/plugins/clienticons/clienticons.tcl	2011-01-01 20:24:05 UTC (rev 450)
@@ -1,370 +1,371 @@
-# Client Icons plugin (52 clients) 02-07-2009 r5 (Jet <megaxbit at xmpp.ru>) 
-# Modifications, extentions etc. (c) 2010 ancestor <xmpp:ancestor at jabber.org>
-# This plugin contains some portions of Psi+ <http://psi-dev.googlecode.com>
-# and Gajim <http://gajim.org> free jabber clients.
-
-namespace eval clienticons {
-    if {[catch {package require Img}]} {
-        return
-    }
-
-	variable jidnodes
-	variable icondir
-    variable aicsdir
-
-    ::msgcat::mcload [file join [file dirname [info script]] msgs]
-
-    if {![::plugins::is_registered clienticons]} {
-        ::plugins::register clienticons \
-            -namespace [namespace current] \
-            -source [info script] \
-            -description [::msgcat::mc "Client icons."] \
-            -loadcommand [namespace code load] \
-            -unloadcommand [namespace code unload]
-        return
-    }
-
-    custom::defgroup Plugins [::msgcat::mc "Plugins options."] -group Tkabber
-
-    custom::defvar options(show_clienticons) 1 \
-        [::msgcat::mc "Show client icons."] \
-        -type boolean -group {Client Icons}
-
-    custom::defvar options(show_afficons) 1 \
-        [::msgcat::mc "Show affiliation icons (only groupchats)."] \
-        -type boolean -group {Client Icons}
-
-	set icondir "[file dirname [info script]]/pixmap"
-    set aicsdir "[file dirname [info script]]/afficons"
-}
-
-######################################################################################
-
-proc clienticons::caps_collector {xlib jid type x args} {
-	variable jidnodes
-	variable jidver
-	if {$type == "unavailable"} {
-		catch {unset jidnodes($jid)}
-		catch {unset jidver($jid)}
-		return
-	}
-	foreach xdata $x {
-		if {[::xmpp::xml::getAttr $xdata c] == "http://jabber.org/protocol/caps"} {
-			::xmpp::xml::split $xdata tag xmlns attrs cdata subels
-			set jidnodes($jid) [::xmpp::xml::getAttr $attrs node]
-			set jidver($jid) [::xmpp::xml::getAttr $attrs ver]
-			return
-		}
-	}
-}
-
-proc ::get_client_from_jid {jid} {
-	if {[info exists ::plugins::clienticons::jidnodes($jid)]} {
-		return $::plugins::clienticons::jidnodes($jid)
-	} else {
-		return
-	}
-}
-
-proc ::get_client_icon {jid} {
-    if {$jid == "juick at juick.com" || [regexp ".*juick.com.*" $jid]} {
-        set icon clients/juick
-        return $icon
-    }
-
-	set node [::get_client_from_jid $jid]
-    
-	switch -glob -- [string tolower $node] {
-		*adium*								{set icon clients/adium}
-		*bitlbee*							{set icon clients/bitlbee}
-		*bayanicq* -
-		*barobin.com*						{set icon clients/bayanicq}
-		*barracuda.com* -
-		"*barracuda im client*"				{set icon clients/barracuda-im}
-		*bombusmod.net.ru*					{set icon clients/bombusmod}
-		*bombusmod-qd.wen.ru*				{set icon clients/bombusqd}	
-		*bombus-im.org/ng* -
-		*bombus-ng*							{set icon clients/bombusng}
-		*bombus.pl*							{set icon clients/bombuspl}
-		*bombus+* -
-		*voffk.org.ru*						{set icon clients/bombusplus}
-		*bombus-im.org/java*				{set icon clients/bombus}
-		*coccinella*						{set icon clients/coccinella}
-		*exodus*							{set icon clients/exodus}
-		*fatal-bot*					        {set icon clients/fatal-bot}
-		*gajim*								{set icon clients/gajim}
-		*code.google.com/p/vacuum-im* -
-		*vacuum*							{set icon clients/vacuum}
-        *gmail* -
-		*google.com*						{set icon clients/google.com}
-		*glu.net*							{set icon clients/glu}
-		*gluxibot*							{set icon clients/gluxibot}
-		*gizmo*								{set icon clients/gizmo}
-		*hotcoffee*							{set icon clients/mirandahotcoffee}
-		*ichat*								{set icon clients/ichat}
-		*isida-bot.com*						{set icon clients/isida-bot}
-		*jabbim*							{set icon clients/jabbim}
-		"*jabber weather.com transport*"	{set icon clients/weather.com}
-		*jabber.el*							{set icon clients/jabber.el}
-		*jajc* -
-		"*just another jabber client*"		{set icon clients/jajc}
-		*japyt*								{set icon clients/japyt}
-		*jimm*								{set icon clients/jimm-aspro}
-		*jbot*								{set icon clients/jbother}
-		*kopete*							{set icon clients/kopete}
-		*mchat*								{set icon clients/mchat}
-		*miranda*							{set icon clients/miranda}
-		*mail.google.com*					{set icon clients/mail.google.com}
-		*mcabber*							{set icon clients/mcabber}
-		*mrim* -
-		*svn.xmpp.ru* -
-		*none*								{set icon clients/mailruagent}
-		*nimbuzz*							{set icon clients/nimbuzz}
-		*omnipresence* -
-		*home.gna.org*						{set icon clients/omnipresence}
-		*beeonline*							{set icon clients/om.beeonline.ru}
-		*pandion*							{set icon clients/pandion}
-		*psi+* -
-		*psi-dev.googlecode.com*			{set icon clients/psiplus}
-		*psi-im.org*						{set icon clients/psi}
-		*pidgin*							{set icon clients/pidgin}
-		*pyicqt.googlecode.com* -
-		"*icq transport*"					{set icon clients/pyicq-t}
-		"*vkontakte.ru transport*" -
-		*pyvk-t*							{set icon clients/pyvk-t}
-		*process-one.net*					{set icon clients/oneteamiphone}
-		*qutim*								{set icon clients/qutim}
-		"*siemens native jabber client*" -
-		*siejc*								{set icon clients/siejc}
-		"*spark im client*"					{set icon clients/spark}
-		*talkonaut*							{set icon clients/talkonaut}
-		*talkgadget.google.com*				{set icon clients/talkgadget.google.com}
-		*talk.google.com*					{set icon clients/talk.google.com}
-		*tkabber*							{set icon clients/tkabber}
-		*telepathy.freedesktop.org*			{set icon clients/telepathy.freedesktop.org}
-		*online.yandex.ru*					{set icon clients/yaonline}
-		*ya.online*							{set icon clients/yaonlinej2me}
-		*yaonline*							{set icon clients/yaonlinesymbian}
-        *juick.com*							{set icon clients/juick}
-		*bluendo.com*						{set icon clients/lampiro}
-		*pjc.googlecode.com*				{set icon clients/pjc_lib}
-		*delx.net.au/projects/pymsnt*		{set icon clients/pymsnt}
-		*msn-transport.jabberstudio.org*	{set icon clients/msn}
-		*osiris-bot*						{set icon clients/osiris}
-		*chat.ovi.com* - 
-		"*ovi contacts*"					{set icon clients/ovi-chat}
-		"*yabber instant messenger*"		{set icon clients/yabber}
-		*trillian*							{set icon clients/trillian}
-		*swift*								{set icon clients/swift}
-		*sim*								{set icon clients/sim}
-		"*sapo messenger mac*" -
-		*messenger.sapo.pt*					{set icon clients/sapo}
-		*xmpp4moz* -
-		*hyperstruct.net*					{set icon clients/sameplace}
-		*apps.radio-t.com*					{set icon clients/radio-t}
-		*pda.qip.ru* -
-		"*qip pda*"							{set icon clients/qippda}
-        *qip*								{set icon clients/qipinfium}
-		"*google talk user account*"		{set icon clients/android}
-		*aqq*								{set icon clients/aqq}
-		*asterisk*							{set icon clients/asterisk}
-		*avalon*							{set icon clients/bombus-avalon}
-		*klub54.wen.ru* -
-		*bombusklub*						{set icon clients/bombus-klub}
-		*talisman*							{set icon clients/bot}
-		*buddydroid*						{set icon clients/buddydroid}
-		*centerim*							{set icon clients/centerim}
-		*freqbot*							{set icon clients/freqbot}
-		"*google.com 1.0.0.66*"				{set icon clients/fring}
-		*gismeteo.ru*						{set icon clients/gismeteo}
-		*imov*								{set icon clients/imov}
-		*jabbin*							{set icon clients/jabbin}
-		*jabiru*							{set icon clients/jabiru}
-		*jappix*							{set icon clients/jappix}
-		*pjc*								{set icon clients/jubo}
-		*mobileagent*						{set icon clients/mailruagent.sis}
-		*meebo*								{set icon clients/meebo}
-        *bot*   							{set icon clients/bot}
-		default								{set icon clients/unknown}
-	}
-	return $icon
-}
-
-######################################################################################
-
-proc clienticons::popupinfo {var xlib user} {
-	variable jidnodes
-	variable jidver
-	upvar 0 $var info
-	if {[info exists jidnodes($user)]} {
-		append info "\n\t$jidnodes($user) $jidver($user)"
-	}
-}
-
-######################################################################################
-
-rename ::ifacetk::roster::addline ::ifacetk::roster::addline_old
-
-proc ::ifacetk::roster::addline {w type text jid group metajids indent {jids {}} {icon ""} {foreground ""}} {
-	variable iroster
-	variable config
-
-	set c $w.canvas
-
-	set tag [jid_to_tag $jid]
-	set grouptag [jid_to_tag $group]
-	set metatag [jid_to_tag $metajids]
-	
-	set ypad 1
-	set linespace [font metric $::RosterFont -linespace]
-	set lineheight [expr {$linespace + $ypad}]
-	
-	set uy $iroster($w,ypos)
-	set ly [expr {$uy + $lineheight + $config(textuppad) + $config(textdownpad)}]
-
-	::ifacetk::roster::addline_old $w $type $text $jid $group $metajids $indent $jids $icon $foreground
-	
-	set xlib [lindex $jid 0]
-	set mjid [lindex $jid 1]
-	set sjid [::xmpp::jid::stripResource $mjid]
-
-	lassign [::roster::get_category_and_subtype $xlib $sjid] category subtype	
-
-	if {$type == "jid" || $type == "jid2" || $type == "metajid"} {
-		if {$category == "conference" && $w == ".roster"} return
-			set y [expr {($uy + $ly)/2}]		
-			set x [expr [winfo width $c] - 2]
-			
-			if {$w == ".roster"} {set cjids $jids} else {set cjids [list $mjid]}
-            
-			if {$type == "metajid"} {
-				foreach barejid $cjids {
-					foreach fjid [::get_jids_of_user $xlib $barejid] {
-						lappend tmpjlist $fjid
-					}				
-				}
-				catch {set cjids $tmpjlist}
-				catch {unset tmpjlist}
-			}
-            
-			foreach j $cjids {
-				if {[::get_jid_status $xlib $j] != "unavailable"} {
-					set icon [::get_client_icon $j]
-                    
-                    if {$category == "conference"} {
-                        if {$::plugins::clienticons::options(show_afficons)} {
-                            set offset 7
-                            
-                            if {$::plugins::clienticons::options(show_clienticons)} {
-                                set offset [expr $offset + 10]
-                            }
-                            
-                            set role [::muc::get_role $xlib $j]
-                            set aff [::muc::get_affiliation $xlib $j]
-                            
-                            if {$role == "visitor"} {
-                                set affi visitor
-                            } elseif {$aff == "owner"} {
-                                set affi owner
-                            } else {
-                                set affi $aff
-                            }
-                            
-                            $c create image [expr $x - $offset] $y -image afficons/$affi \
-                                -anchor e \
-                                -tag [list jid$tag group$grouptag meta$metatag $type icon afficon]
-                        }
-                    }
-                        
-                    if {[lsearch [image names] $icon] == -1} {
-                        set icon clients/unknown
-                    }
-                       
-                    if {$::plugins::clienticons::options(show_clienticons)} {
-                        $c create image $x $y -image $icon \
-                            -anchor e \
-                            -tags [list jid$tag group$grouptag meta$metatag $type icon clienticon]
-                    }
-                    
-					incr x [expr ([image height $icon] + 1) * -1]
-				}
-			}
-            
-		if {[bind $c <Expose>] == ""} {
-			if {$w != ".roster" && $category == "conference"} {
-				bind $c <Expose> [list ::chat::redraw_roster \
-				[double% "$xlib $sjid"]]
-			} else {
-				bind $c <Expose> ::ifacetk::roster::redraw
-			}
-		}
-	}
-}
-
-######################################################################################
-
-proc clienticons::load_images {xdata} {
-	variable icondir
-    variable aicsdir
-	::xmpp::xml::split $xdata tag xmlns attrs cdata subels
-
-	set csubels $subels
-	foreach s $csubels {
-		::xmpp::xml::split $s tag xmlns attrs cdata subels
-		switch $tag {
-			x		{set iconame [::xmpp::xml::getCdata $s]}
-			object	{set filename "$icondir/[::xmpp::xml::getCdata $s]"}	
-		}	
-	}
-
-    if {[file exists "$filename"]} {
-        image create photo $iconame -file $filename
-    }
-
-    foreach ai {visitor none member admin owner} {
-        set affi "$aicsdir/${ai}.png"
-        image create photo afficons/$ai -file $affi
-    }
-}
-
-proc clienticons::parse_xml {xdata} {
-	::xmpp::xml::split $xdata tag xmlns attrs cdata subels
-	set csubels $subels
-	foreach subel $csubels {
-		::xmpp::xml::split $subel tag xmlns attrs cdata subels
-		if {$tag == "icon"} {
-			catch {[namespace current]::load_images $subel}
-		}
-    }
-}
-
-proc clienticons::load_client_icons {} {
-	variable icondir
-	if {![file exists "$icondir/icondef.xml"]} continue
-	set fileid [open "$icondir/icondef.xml" r]
-	set buffer [read $fileid]
-	close $fileid
-	catch {::xmpp::xml::parseData $buffer [list [namespace current]::parse_xml]}
-}
-
-######################################################################################
-
-proc clienticons::load {} {
-    custom::defgroup {Client Icons} [::msgcat::mc "Client icons options."] -group Plugins -type visible
-
-	[namespace current]::load_client_icons
-	hook::add client_presence_hook [namespace current]::caps_collector
-	hook::add roster_user_popup_info_hook [namespace current]::popupinfo 99
-	::ifacetk::roster::redraw
-}
-
-proc clienticons::unload {} {
-	hook::remove client_presence_hook	[namespace current]::caps_collector
-	hook::remove roster_user_popup_info_hook [namespace current]::popupinfo 99
-	rename ::ifacetk::roster::addline {}
-	rename ::ifacetk::roster::addline_old ::ifacetk::roster::addline
-	bind .roster.canvas <Expose>
-	::ifacetk::roster::redraw
-
-    custom::defgroup {Client Icons} [::msgcat::mc "Client icons options."] -group Plugins -type hidden
+# Client Icons plugin (52 clients) 02-07-2009 r5 (Jet <megaxbit at xmpp.ru>) 
+# Modifications, extentions etc. (c) 2010 ancestor <xmpp:ancestor at jabber.org>
+# This plugin contains some portions of Psi+ <http://psi-dev.googlecode.com>
+# and Gajim <http://gajim.org> free jabber clients.
+
+namespace eval clienticons {
+    if {[catch {package require Img}]} {
+        return
+    }
+
+	variable jidnodes
+	variable icondir
+    variable aicsdir
+
+    ::msgcat::mcload [file join [file dirname [info script]] msgs]
+
+    if {![::plugins::is_registered clienticons]} {
+        ::plugins::register clienticons \
+            -namespace [namespace current] \
+            -source [info script] \
+            -description [::msgcat::mc "Client icons."] \
+            -loadcommand [namespace code load] \
+            -unloadcommand [namespace code unload]
+        return
+    }
+
+    custom::defgroup Plugins [::msgcat::mc "Plugins options."] -group Tkabber
+
+    custom::defvar options(show_clienticons) 1 \
+        [::msgcat::mc "Show client icons."] \
+        -type boolean -group {Client Icons}
+
+    custom::defvar options(show_afficons) 1 \
+        [::msgcat::mc "Show affiliation icons (only groupchats)."] \
+        -type boolean -group {Client Icons}
+
+	set icondir "[file dirname [info script]]/pixmap"
+    set aicsdir "[file dirname [info script]]/afficons"
+}
+
+######################################################################################
+
+proc clienticons::caps_collector {xlib jid type x args} {
+	variable jidnodes
+	variable jidver
+	if {$type == "unavailable"} {
+		catch {unset jidnodes($jid)}
+		catch {unset jidver($jid)}
+		return
+	}
+	foreach xdata $x {
+		if {[::xmpp::xml::getAttr $xdata c] == "http://jabber.org/protocol/caps"} {
+			::xmpp::xml::split $xdata tag xmlns attrs cdata subels
+			set jidnodes($jid) [::xmpp::xml::getAttr $attrs node]
+			set jidver($jid) [::xmpp::xml::getAttr $attrs ver]
+			return
+		}
+	}
+}
+
+proc ::get_client_from_jid {jid} {
+	if {[info exists ::plugins::clienticons::jidnodes($jid)]} {
+		return $::plugins::clienticons::jidnodes($jid)
+	} else {
+		return
+	}
+}
+
+proc ::get_client_icon {jid} {
+    if {$jid == "juick at juick.com" || [regexp ".*juick.com.*" $jid]} {
+        set icon clients/juick
+        return $icon
+    }
+
+	set node [::get_client_from_jid $jid]
+    
+	switch -glob -- [string tolower $node] {
+		*adium*								{set icon clients/adium}
+		*bitlbee*							{set icon clients/bitlbee}
+		*bayanicq* -
+		*barobin.com*						{set icon clients/bayanicq}
+		*barracuda.com* -
+		"*barracuda im client*"				{set icon clients/barracuda-im}
+		*bombusmod.net.ru*					{set icon clients/bombusmod}
+		*bombusmod-qd.wen.ru*				{set icon clients/bombusqd}	
+		*bombus-im.org/ng* -
+		*bombus-ng*							{set icon clients/bombusng}
+		*bombus.pl*							{set icon clients/bombuspl}
+		*bombus+* -
+		*voffk.org.ru*						{set icon clients/bombusplus}
+		*bombus-im.org/java*				{set icon clients/bombus}
+		*coccinella*						{set icon clients/coccinella}
+		*exodus*							{set icon clients/exodus}
+		*fatal-bot*					        {set icon clients/fatal-bot}
+		*gajim*								{set icon clients/gajim}
+		*code.google.com/p/vacuum-im* -
+		*vacuum*							{set icon clients/vacuum}
+        *gmail* -
+		*google.com*						{set icon clients/google.com}
+		*glu.net*							{set icon clients/glu}
+		*gluxibot*							{set icon clients/gluxibot}
+		*gizmo*								{set icon clients/gizmo}
+		*hotcoffee*							{set icon clients/mirandahotcoffee}
+		*ichat*								{set icon clients/ichat}
+		*isida-bot.com*						{set icon clients/isida-bot}
+		*jabbim*							{set icon clients/jabbim}
+		"*jabber weather.com transport*"	{set icon clients/weather.com}
+		*jabber.el*							{set icon clients/jabber.el}
+		*jajc* -
+		"*just another jabber client*"		{set icon clients/jajc}
+		*japyt*								{set icon clients/japyt}
+		*jimm*								{set icon clients/jimm-aspro}
+		*jbot*								{set icon clients/jbother}
+		*kopete*							{set icon clients/kopete}
+		*leechcraft*						{set icon clients/leechcraft}
+		*mchat*								{set icon clients/mchat}
+		*miranda*							{set icon clients/miranda}
+		*mail.google.com*					{set icon clients/mail.google.com}
+		*mcabber*							{set icon clients/mcabber}
+		*mrim* -
+		*svn.xmpp.ru* -
+		*none*								{set icon clients/mailruagent}
+		*nimbuzz*							{set icon clients/nimbuzz}
+		*omnipresence* -
+		*home.gna.org*						{set icon clients/omnipresence}
+		*beeonline*							{set icon clients/om.beeonline.ru}
+		*pandion*							{set icon clients/pandion}
+		*psi+* -
+		*psi-dev.googlecode.com*			{set icon clients/psiplus}
+		*psi-im.org*						{set icon clients/psi}
+		*pidgin*							{set icon clients/pidgin}
+		*pyicqt.googlecode.com* -
+		"*icq transport*"					{set icon clients/pyicq-t}
+		"*vkontakte.ru transport*" -
+		*pyvk-t*							{set icon clients/pyvk-t}
+		*process-one.net*					{set icon clients/oneteamiphone}
+		*qutim*								{set icon clients/qutim}
+		"*siemens native jabber client*" -
+		*siejc*								{set icon clients/siejc}
+		"*spark im client*"					{set icon clients/spark}
+		*talkonaut*							{set icon clients/talkonaut}
+		*talkgadget.google.com*				{set icon clients/talkgadget.google.com}
+		*talk.google.com*					{set icon clients/talk.google.com}
+		*tkabber*							{set icon clients/tkabber}
+		*telepathy.freedesktop.org*			{set icon clients/telepathy.freedesktop.org}
+		*online.yandex.ru*					{set icon clients/yaonline}
+		*ya.online*							{set icon clients/yaonlinej2me}
+		*yaonline*							{set icon clients/yaonlinesymbian}
+        *juick.com*							{set icon clients/juick}
+		*bluendo.com*						{set icon clients/lampiro}
+		*pjc.googlecode.com*				{set icon clients/pjc_lib}
+		*delx.net.au/projects/pymsnt*		{set icon clients/pymsnt}
+		*msn-transport.jabberstudio.org*	{set icon clients/msn}
+		*osiris-bot*						{set icon clients/osiris}
+		*chat.ovi.com* - 
+		"*ovi contacts*"					{set icon clients/ovi-chat}
+		"*yabber instant messenger*"		{set icon clients/yabber}
+		*trillian*							{set icon clients/trillian}
+		*swift*								{set icon clients/swift}
+		*sim*								{set icon clients/sim}
+		"*sapo messenger mac*" -
+		*messenger.sapo.pt*					{set icon clients/sapo}
+		*xmpp4moz* -
+		*hyperstruct.net*					{set icon clients/sameplace}
+		*apps.radio-t.com*					{set icon clients/radio-t}
+		*pda.qip.ru* -
+		"*qip pda*"							{set icon clients/qippda}
+        *qip*								{set icon clients/qipinfium}
+		"*google talk user account*"		{set icon clients/android}
+		*aqq*								{set icon clients/aqq}
+		*asterisk*							{set icon clients/asterisk}
+		*avalon*							{set icon clients/bombus-avalon}
+		*klub54.wen.ru* -
+		*bombusklub*						{set icon clients/bombus-klub}
+		*talisman*							{set icon clients/bot}
+		*buddydroid*						{set icon clients/buddydroid}
+		*centerim*							{set icon clients/centerim}
+		*freqbot*							{set icon clients/freqbot}
+		"*google.com 1.0.0.66*"				{set icon clients/fring}
+		*gismeteo.ru*						{set icon clients/gismeteo}
+		*imov*								{set icon clients/imov}
+		*jabbin*							{set icon clients/jabbin}
+		*jabiru*							{set icon clients/jabiru}
+		*jappix*							{set icon clients/jappix}
+		*pjc*								{set icon clients/jubo}
+		*mobileagent*						{set icon clients/mailruagent.sis}
+		*meebo*								{set icon clients/meebo}
+        *bot*   							{set icon clients/bot}
+		default								{set icon clients/unknown}
+	}
+	return $icon
+}
+
+######################################################################################
+
+proc clienticons::popupinfo {var xlib user} {
+	variable jidnodes
+	variable jidver
+	upvar 0 $var info
+	if {[info exists jidnodes($user)]} {
+		append info "\n\t$jidnodes($user) $jidver($user)"
+	}
+}
+
+######################################################################################
+
+rename ::ifacetk::roster::addline ::ifacetk::roster::addline_old
+
+proc ::ifacetk::roster::addline {w type text jid group metajids indent {jids {}} {icon ""} {foreground ""}} {
+	variable iroster
+	variable config
+
+	set c $w.canvas
+
+	set tag [jid_to_tag $jid]
+	set grouptag [jid_to_tag $group]
+	set metatag [jid_to_tag $metajids]
+	
+	set ypad 1
+	set linespace [font metric $::RosterFont -linespace]
+	set lineheight [expr {$linespace + $ypad}]
+	
+	set uy $iroster($w,ypos)
+	set ly [expr {$uy + $lineheight + $config(textuppad) + $config(textdownpad)}]
+
+	::ifacetk::roster::addline_old $w $type $text $jid $group $metajids $indent $jids $icon $foreground
+	
+	set xlib [lindex $jid 0]
+	set mjid [lindex $jid 1]
+	set sjid [::xmpp::jid::stripResource $mjid]
+
+	lassign [::roster::get_category_and_subtype $xlib $sjid] category subtype	
+
+	if {$type == "jid" || $type == "jid2" || $type == "metajid"} {
+		if {$category == "conference" && $w == ".roster"} return
+			set y [expr {($uy + $ly)/2}]		
+			set x [expr [winfo width $c] - 2]
+			
+			if {$w == ".roster"} {set cjids $jids} else {set cjids [list $mjid]}
+            
+			if {$type == "metajid"} {
+				foreach barejid $cjids {
+					foreach fjid [::get_jids_of_user $xlib $barejid] {
+						lappend tmpjlist $fjid
+					}				
+				}
+				catch {set cjids $tmpjlist}
+				catch {unset tmpjlist}
+			}
+            
+			foreach j $cjids {
+				if {[::get_jid_status $xlib $j] != "unavailable"} {
+					set icon [::get_client_icon $j]
+                    
+                    if {$category == "conference"} {
+                        if {$::plugins::clienticons::options(show_afficons)} {
+                            set offset 7
+                            
+                            if {$::plugins::clienticons::options(show_clienticons)} {
+                                set offset [expr $offset + 10]
+                            }
+                            
+                            set role [::muc::get_role $xlib $j]
+                            set aff [::muc::get_affiliation $xlib $j]
+                            
+                            if {$role == "visitor"} {
+                                set affi visitor
+                            } elseif {$aff == "owner"} {
+                                set affi owner
+                            } else {
+                                set affi $aff
+                            }
+                            
+                            $c create image [expr $x - $offset] $y -image afficons/$affi \
+                                -anchor e \
+                                -tag [list jid$tag group$grouptag meta$metatag $type icon afficon]
+                        }
+                    }
+                        
+                    if {[lsearch [image names] $icon] == -1} {
+                        set icon clients/unknown
+                    }
+                       
+                    if {$::plugins::clienticons::options(show_clienticons)} {
+                        $c create image $x $y -image $icon \
+                            -anchor e \
+                            -tags [list jid$tag group$grouptag meta$metatag $type icon clienticon]
+                    }
+                    
+					incr x [expr ([image height $icon] + 1) * -1]
+				}
+			}
+            
+		if {[bind $c <Expose>] == ""} {
+			if {$w != ".roster" && $category == "conference"} {
+				bind $c <Expose> [list ::chat::redraw_roster \
+				[double% "$xlib $sjid"]]
+			} else {
+				bind $c <Expose> ::ifacetk::roster::redraw
+			}
+		}
+	}
+}
+
+######################################################################################
+
+proc clienticons::load_images {xdata} {
+	variable icondir
+    variable aicsdir
+	::xmpp::xml::split $xdata tag xmlns attrs cdata subels
+
+	set csubels $subels
+	foreach s $csubels {
+		::xmpp::xml::split $s tag xmlns attrs cdata subels
+		switch $tag {
+			x		{set iconame [::xmpp::xml::getCdata $s]}
+			object	{set filename "$icondir/[::xmpp::xml::getCdata $s]"}	
+		}	
+	}
+
+    if {[file exists "$filename"]} {
+        image create photo $iconame -file $filename
+    }
+
+    foreach ai {visitor none member admin owner} {
+        set affi "$aicsdir/${ai}.png"
+        image create photo afficons/$ai -file $affi
+    }
+}
+
+proc clienticons::parse_xml {xdata} {
+	::xmpp::xml::split $xdata tag xmlns attrs cdata subels
+	set csubels $subels
+	foreach subel $csubels {
+		::xmpp::xml::split $subel tag xmlns attrs cdata subels
+		if {$tag == "icon"} {
+			catch {[namespace current]::load_images $subel}
+		}
+    }
+}
+
+proc clienticons::load_client_icons {} {
+	variable icondir
+	if {![file exists "$icondir/icondef.xml"]} continue
+	set fileid [open "$icondir/icondef.xml" r]
+	set buffer [read $fileid]
+	close $fileid
+	catch {::xmpp::xml::parseData $buffer [list [namespace current]::parse_xml]}
+}
+
+######################################################################################
+
+proc clienticons::load {} {
+    custom::defgroup {Client Icons} [::msgcat::mc "Client icons options."] -group Plugins -type visible
+
+	[namespace current]::load_client_icons
+	hook::add client_presence_hook [namespace current]::caps_collector
+	hook::add roster_user_popup_info_hook [namespace current]::popupinfo 99
+	::ifacetk::roster::redraw
+}
+
+proc clienticons::unload {} {
+	hook::remove client_presence_hook	[namespace current]::caps_collector
+	hook::remove roster_user_popup_info_hook [namespace current]::popupinfo 99
+	rename ::ifacetk::roster::addline {}
+	rename ::ifacetk::roster::addline_old ::ifacetk::roster::addline
+	bind .roster.canvas <Expose>
+	::ifacetk::roster::redraw
+
+    custom::defgroup {Client Icons} [::msgcat::mc "Client icons options."] -group Plugins -type hidden
 }
\ No newline at end of file

Modified: trunk/plugins/clienticons/pixmap/icondef.xml
===================================================================
--- trunk/plugins/clienticons/pixmap/icondef.xml	2010-12-29 17:56:20 UTC (rev 449)
+++ trunk/plugins/clienticons/pixmap/icondef.xml	2011-01-01 20:24:05 UTC (rev 450)
@@ -1,810 +1,815 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<icondef>
-        <meta>
-                <name>Psi+ Fingerprint - size 16</name>
-                <version>0.3.1</version>
-                <creation>2010-08-13</creation>
-                <home>http://psi-dev.googlecode.com/</home>
-                <author email='maksim.maj at gmail.com'>maj</author>
-                <author email='vladimir.shelukhin at gmail.com'>zet</author>
-                <description>Icons number: 152
-
-Based on Fingeprint Plus plugin
-for Miranda IM by Angeli-Ka
-http://angeli-ka.my1.ru/
-http://miranda-im.org/
-
-Additional icons were taken from
-http://qipim.cz/viewtopic.php?t=2123
-
-Thanks to all authors of iconpacks
-and members of
-psi-dev at conference.jabber.ru</description>
-           </meta>
-
-        <icon>
-                <x xmlns='name'>clients/1end1</x>
-                <object mime='image/png'>1end1.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/adium</x>
-                <object mime='image/png'>adium.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/agilemessenger</x>
-                <object mime='image/png'>agilemessenger.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/aim</x>
-                <object mime='image/png'>aim.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/akeni</x>
-                <object mime='image/png'>akeni.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/anastasiya</x>
-                <object mime='image/png'>anastasiya.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/android</x>
-                <object mime='image/png'>android.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/apple</x>
-                <object mime='image/png'>apple.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/aqq</x>
-                <object mime='image/png'>aqq.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/asterisk</x>
-                <object mime='image/png'>asterisk.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/ayttm</x>
-                <object mime='image/png'>ayttm.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/barracuda-im</x>
-                <object mime='image/png'>barracuda-im.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/bayanicq</x>
-                <object mime='image/png'>bayanicq.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/beejive</x>
-                <object mime='image/png'>beejive.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/bitlbee</x>
-                <object mime='image/png'>bitlbee.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/bombus-avalon</x>
-                <object mime='image/png'>bombus-avalon.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/bombus-klub</x>
-                <object mime='image/png'>bombus-klub.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/bombus</x>
-                <object mime='image/png'>bombus.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/bombus</x>
-                <object mime='image/png'>bombus.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/bombusmod</x>
-                <object mime='image/png'>bombusmod.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/bombusng</x>
-                <object mime='image/png'>bombusng.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/bombuspl.png</x>
-                <object mime='image/png'>bombuspl.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/bombusplus</x>
-                <object mime='image/png'>bombusplus.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/bombusqd</x>
-                <object mime='image/png'>bombusqd.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/bot</x>
-                <object mime='image/png'>bot.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/buddydroid</x>
-                <object mime='image/png'>buddydroid.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/centericq</x>
-                <object mime='image/png'>centericq.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/centerim</x>
-                <object mime='image/png'>centerim.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/coccinella</x>
-                <object mime='image/png'>coccinella.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/colibry</x>
-                <object mime='image/png'>colibry.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/corepager</x>
-                <object mime='image/png'>corepager.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/dichat</x>
-                <object mime='image/png'>dichat.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/digsby</x>
-                <object mime='image/png'>digsby.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/ebuddy</x>
-                <object mime='image/png'>ebuddy.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/exodus</x>
-                <object mime='image/png'>exodus.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/freqbot</x>
-                <object mime='image/png'>freqbot.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/fring</x>
-                <object mime='image/png'>fring.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/fatal-bot</x>
-                <object mime='image/png'>fatal-bot.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/gabber</x>
-                <object mime='image/png'>gabber.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/gadugadu</x>
-                <object mime='image/png'>gadugadu.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/gaim</x>
-                <object mime='image/png'>gaim.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/gajim</x>
-                <object mime='image/png'>gajim.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/gismeteo</x>
-                <object mime='image/png'>gismeteo.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/gizmo</x>
-                <object mime='image/png'>gizmo.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/glu</x>
-                <object mime='image/png'>glu.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/gluxibot</x>
-                <object mime='image/png'>gluxibot.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/goim</x>
-                <object mime='image/png'>goim.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/google.com</x>
-                <object mime='image/png'>google.com.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/gossip</x>
-                <object mime='image/png'>gossip.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/gush</x>
-                <object mime='image/png'>gush.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/ichabber</x>
-                <object mime='image/png'>ichabber.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/ichat</x>
-                <object mime='image/png'>ichat.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/imov</x>
-                <object mime='image/png'>imov.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/implus</x>
-                <object mime='image/png'>implus.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/inluxmessenger</x>
-                <object mime='image/png'>inluxmessenger.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/instango</x>
-                <object mime='image/png'>instango.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/isida-bot</x>
-                <object mime='image/png'>isida-bot.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/jabber.el</x>
-                <object mime='image/png'>jabber.el.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/jabbroid</x>
-                <object mime='image/png'>jabbroid.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/jabbim</x>
-                <object mime='image/png'>jabbim.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/jabbin</x>
-                <object mime='image/png'>jabbin.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/jabiru</x>
-                <object mime='image/png'>jabiru.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/jajc</x>
-                <object mime='image/png'>jajc.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/jappix</x>
-                <object mime='image/png'>jappix.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/japyt</x>
-                <object mime='image/png'>japyt.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/jbother</x>
-                <object mime='image/png'>jbother.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/jeti</x>
-                <object mime='image/png'>jeti.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/jicq</x>
-                <object mime='image/png'>jicq.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/jimm</x>
-                <object mime='image/png'>jimm.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/jimm-aspro</x>
-                <object mime='image/png'>jimm-aspro.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/jit</x>
-                <object mime='image/png'>jit.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/jmiranda</x>
-                <object mime='image/png'>jmiranda.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/jubo</x>
-                <object mime='image/png'>jubo.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/juick</x>
-                <object mime='image/png'>juick.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/koolim</x>
-                <object mime='image/png'>koolim.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/kopete</x>
-                <object mime='image/png'>kopete.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/lampiro</x>
-                <object mime='image/png'>lampiro.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/mabber</x>
-                <object mime='image/png'>mabber.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/mail.google.com</x>
-                <object mime='image/png'>mail.google.com.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/mailruagent</x>
-                <object mime='image/png'>mailruagent.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/mailruagent.sis</x>
-                <object mime='image/png'>mailruagent.sis.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/mcabber</x>
-                <object mime='image/png'>mcabber.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/mchat</x>
-                <object mime='image/png'>mchat.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/meebo</x>
-                <object mime='image/png'>meebo.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/meetro</x>
-                <object mime='image/png'>meetro.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/mig33</x>
-                <object mime='image/png'>mig33.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/mip</x>
-                <object mime='image/png'>mip.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/miranda</x>
-                <object mime='image/png'>miranda.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/mirandahotcoffee</x>
-                <object mime='image/png'>mirandahotcoffee.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/morange</x>
-                <object mime='image/png'>morange.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/msn</x>
-                <object mime='image/png'>msn.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/msnmessenger</x>
-                <object mime='image/png'>msnmessenger.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/msnwebmessenger</x>
-                <object mime='image/png'>msnwebmessenger.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/naticq</x>
-                <object mime='image/png'>naticq.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/nicq</x>
-                <object mime='image/png'>nicq.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/nimbuzz</x>
-                <object mime='image/png'>nimbuzz.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/om.beeonline.ru</x>
-                <object mime='image/png'>om.beeonline.ru.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/omnipresence</x>
-                <object mime='image/png'>omnipresence.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/oneteamiphone</x>
-                <object mime='image/png'>oneteamiphone.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/osiris</x>
-                <object mime='image/png'>osiris.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/ovi-chat</x>
-                <object mime='image/png'>ovi-chat.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/palringo</x>
-                <object mime='image/png'>palringo.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/pandion</x>
-                <object mime='image/png'>pandion.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/papla</x>
-                <object mime='image/png'>papla.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/phpicq</x>
-                <object mime='image/png'>phpicq.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/pidgin</x>
-                <object mime='image/png'>pidgin.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/pigeon</x>
-                <object mime='image/png'>pigeon.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/pjc_lib</x>
-                <object mime='image/png'>pjc_lib.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/psi</x>
-                <object mime='image/png'>psi.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/psiplus</x>
-                <object mime='image/png'>psiplus.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/pyaim-t</x>
-                <object mime='image/png'>pyaim-t.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/pyicq-t</x>
-                <object mime='image/png'>pyicq-t.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/pymsnt</x>
-                <object mime='image/png'>pymsnt.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/qipinfium</x>
-                <object mime='image/png'>qipinfium.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/qippda</x>
-                <object mime='image/png'>qippda.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/qnext</x>
-                <object mime='image/png'>qnext.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/qq</x>
-                <object mime='image/png'>qq.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/qutim</x>
-                <object mime='image/png'>qutim.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/radio-t</x>
-                <object mime='image/png'>radio-t.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/rnq</x>
-                <object mime='image/png'>rnq.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/rq</x>
-                <object mime='image/png'>rq.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/rss</x>
-                <object mime='image/png'>rss.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/sameplace</x>
-                <object mime='image/png'>sameplace.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/sapo</x>
-                <object mime='image/png'>sapo.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/siejc</x>
-                <object mime='image/png'>siejc.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/sim</x>
-                <object mime='image/png'>sim.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/slick</x>
-                <object mime='image/png'>slick.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/smack</x>
-                <object mime='image/png'>smack.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/smaper</x>
-                <object mime='image/png'>smaper.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/spark</x>
-                <object mime='image/png'>spark.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/sticq</x>
-                <object mime='image/png'>sticq.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/swift</x>
-                <object mime='image/png'>swift.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/talk.google.com</x>
-                <object mime='image/png'>talk.google.com.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/talkgadget.google.com</x>
-                <object mime='image/png'>talkgadget.google.com.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/talkonaut</x>
-                <object mime='image/png'>talkonaut.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/telepathy.freedesktop.org</x>
-                <object mime='image/png'>telepathy.freedesktop.org.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/tipicim</x>
-                <object mime='image/png'>tipicim.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/tkabber</x>
-                <object mime='image/png'>tkabber.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/trillian</x>
-                <object mime='image/png'>trillian.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/trillianbasic</x>
-                <object mime='image/png'>trillianbasic.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/twitter</x>
-                <object mime='image/png'>twitter.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/uim</x>
-                <object mime='image/png'>uim.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/unknown</x>
-                <object mime='image/png'>unknown.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/vacuum</x>
-                <object mime='image/png'>vacuum.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/vkontakte</x>
-                <object mime='image/png'>vkontakte.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/vmicq</x>
-                <object mime='image/png'>vmicq.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/wannachat</x>
-                <object mime='image/png'>wannachat.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/weather.com</x>
-                <object mime='image/png'>weather.com.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/webicq</x>
-                <object mime='image/png'>webicq.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/xeus</x>
-                <object mime='image/png'>xeus.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/xfire</x>
-                <object mime='image/png'>xfire.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/yabber</x>
-                <object mime='image/png'>yabber.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/yahoo</x>
-                <object mime='image/png'>yahoo.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/yaonline</x>
-                <object mime='image/png'>yaonline.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/yaonlinej2me</x>
-                <object mime='image/png'>yaonlinej2me.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/yaonlinesymbian</x>
-                <object mime='image/png'>yaonlinesymbian.png</object>
-        </icon>
-
-        <icon>
-                <x xmlns='name'>clients/yapp</x>
-                <object mime='image/png'>yapp.png</object>
-        </icon>
-
-</icondef>
+<?xml version='1.0' encoding='UTF-8'?>
+<icondef>
+        <meta>
+                <name>Psi+ Fingerprint - size 16</name>
+                <version>0.3.1</version>
+                <creation>2010-08-13</creation>
+                <home>http://psi-dev.googlecode.com/</home>
+                <author email='maksim.maj at gmail.com'>maj</author>
+                <author email='vladimir.shelukhin at gmail.com'>zet</author>
+                <description>Icons number: 152
+
+Based on Fingeprint Plus plugin
+for Miranda IM by Angeli-Ka
+http://angeli-ka.my1.ru/
+http://miranda-im.org/
+
+Additional icons were taken from
+http://qipim.cz/viewtopic.php?t=2123
+
+Thanks to all authors of iconpacks
+and members of
+psi-dev at conference.jabber.ru</description>
+           </meta>
+
+        <icon>
+                <x xmlns='name'>clients/1end1</x>
+                <object mime='image/png'>1end1.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/adium</x>
+                <object mime='image/png'>adium.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/agilemessenger</x>
+                <object mime='image/png'>agilemessenger.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/aim</x>
+                <object mime='image/png'>aim.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/akeni</x>
+                <object mime='image/png'>akeni.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/anastasiya</x>
+                <object mime='image/png'>anastasiya.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/android</x>
+                <object mime='image/png'>android.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/apple</x>
+                <object mime='image/png'>apple.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/aqq</x>
+                <object mime='image/png'>aqq.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/asterisk</x>
+                <object mime='image/png'>asterisk.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/ayttm</x>
+                <object mime='image/png'>ayttm.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/barracuda-im</x>
+                <object mime='image/png'>barracuda-im.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/bayanicq</x>
+                <object mime='image/png'>bayanicq.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/beejive</x>
+                <object mime='image/png'>beejive.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/bitlbee</x>
+                <object mime='image/png'>bitlbee.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/bombus-avalon</x>
+                <object mime='image/png'>bombus-avalon.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/bombus-klub</x>
+                <object mime='image/png'>bombus-klub.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/bombus</x>
+                <object mime='image/png'>bombus.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/bombus</x>
+                <object mime='image/png'>bombus.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/bombusmod</x>
+                <object mime='image/png'>bombusmod.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/bombusng</x>
+                <object mime='image/png'>bombusng.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/bombuspl.png</x>
+                <object mime='image/png'>bombuspl.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/bombusplus</x>
+                <object mime='image/png'>bombusplus.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/bombusqd</x>
+                <object mime='image/png'>bombusqd.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/bot</x>
+                <object mime='image/png'>bot.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/buddydroid</x>
+                <object mime='image/png'>buddydroid.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/centericq</x>
+                <object mime='image/png'>centericq.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/centerim</x>
+                <object mime='image/png'>centerim.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/coccinella</x>
+                <object mime='image/png'>coccinella.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/colibry</x>
+                <object mime='image/png'>colibry.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/corepager</x>
+                <object mime='image/png'>corepager.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/dichat</x>
+                <object mime='image/png'>dichat.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/digsby</x>
+                <object mime='image/png'>digsby.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/ebuddy</x>
+                <object mime='image/png'>ebuddy.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/exodus</x>
+                <object mime='image/png'>exodus.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/freqbot</x>
+                <object mime='image/png'>freqbot.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/fring</x>
+                <object mime='image/png'>fring.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/fatal-bot</x>
+                <object mime='image/png'>fatal-bot.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/gabber</x>
+                <object mime='image/png'>gabber.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/gadugadu</x>
+                <object mime='image/png'>gadugadu.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/gaim</x>
+                <object mime='image/png'>gaim.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/gajim</x>
+                <object mime='image/png'>gajim.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/gismeteo</x>
+                <object mime='image/png'>gismeteo.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/gizmo</x>
+                <object mime='image/png'>gizmo.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/glu</x>
+                <object mime='image/png'>glu.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/gluxibot</x>
+                <object mime='image/png'>gluxibot.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/goim</x>
+                <object mime='image/png'>goim.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/google.com</x>
+                <object mime='image/png'>google.com.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/gossip</x>
+                <object mime='image/png'>gossip.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/gush</x>
+                <object mime='image/png'>gush.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/ichabber</x>
+                <object mime='image/png'>ichabber.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/ichat</x>
+                <object mime='image/png'>ichat.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/imov</x>
+                <object mime='image/png'>imov.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/implus</x>
+                <object mime='image/png'>implus.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/inluxmessenger</x>
+                <object mime='image/png'>inluxmessenger.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/instango</x>
+                <object mime='image/png'>instango.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/isida-bot</x>
+                <object mime='image/png'>isida-bot.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/jabber.el</x>
+                <object mime='image/png'>jabber.el.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/jabbroid</x>
+                <object mime='image/png'>jabbroid.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/jabbim</x>
+                <object mime='image/png'>jabbim.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/jabbin</x>
+                <object mime='image/png'>jabbin.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/jabiru</x>
+                <object mime='image/png'>jabiru.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/jajc</x>
+                <object mime='image/png'>jajc.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/jappix</x>
+                <object mime='image/png'>jappix.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/japyt</x>
+                <object mime='image/png'>japyt.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/jbother</x>
+                <object mime='image/png'>jbother.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/jeti</x>
+                <object mime='image/png'>jeti.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/jicq</x>
+                <object mime='image/png'>jicq.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/jimm</x>
+                <object mime='image/png'>jimm.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/jimm-aspro</x>
+                <object mime='image/png'>jimm-aspro.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/jit</x>
+                <object mime='image/png'>jit.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/jmiranda</x>
+                <object mime='image/png'>jmiranda.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/jubo</x>
+                <object mime='image/png'>jubo.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/juick</x>
+                <object mime='image/png'>juick.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/koolim</x>
+                <object mime='image/png'>koolim.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/kopete</x>
+                <object mime='image/png'>kopete.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/lampiro</x>
+                <object mime='image/png'>lampiro.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/leechcraft</x>
+                <object mime='image/png'>leechcraft.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/mabber</x>
+                <object mime='image/png'>mabber.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/mail.google.com</x>
+                <object mime='image/png'>mail.google.com.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/mailruagent</x>
+                <object mime='image/png'>mailruagent.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/mailruagent.sis</x>
+                <object mime='image/png'>mailruagent.sis.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/mcabber</x>
+                <object mime='image/png'>mcabber.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/mchat</x>
+                <object mime='image/png'>mchat.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/meebo</x>
+                <object mime='image/png'>meebo.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/meetro</x>
+                <object mime='image/png'>meetro.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/mig33</x>
+                <object mime='image/png'>mig33.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/mip</x>
+                <object mime='image/png'>mip.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/miranda</x>
+                <object mime='image/png'>miranda.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/mirandahotcoffee</x>
+                <object mime='image/png'>mirandahotcoffee.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/morange</x>
+                <object mime='image/png'>morange.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/msn</x>
+                <object mime='image/png'>msn.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/msnmessenger</x>
+                <object mime='image/png'>msnmessenger.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/msnwebmessenger</x>
+                <object mime='image/png'>msnwebmessenger.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/naticq</x>
+                <object mime='image/png'>naticq.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/nicq</x>
+                <object mime='image/png'>nicq.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/nimbuzz</x>
+                <object mime='image/png'>nimbuzz.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/om.beeonline.ru</x>
+                <object mime='image/png'>om.beeonline.ru.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/omnipresence</x>
+                <object mime='image/png'>omnipresence.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/oneteamiphone</x>
+                <object mime='image/png'>oneteamiphone.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/osiris</x>
+                <object mime='image/png'>osiris.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/ovi-chat</x>
+                <object mime='image/png'>ovi-chat.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/palringo</x>
+                <object mime='image/png'>palringo.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/pandion</x>
+                <object mime='image/png'>pandion.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/papla</x>
+                <object mime='image/png'>papla.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/phpicq</x>
+                <object mime='image/png'>phpicq.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/pidgin</x>
+                <object mime='image/png'>pidgin.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/pigeon</x>
+                <object mime='image/png'>pigeon.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/pjc_lib</x>
+                <object mime='image/png'>pjc_lib.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/psi</x>
+                <object mime='image/png'>psi.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/psiplus</x>
+                <object mime='image/png'>psiplus.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/pyaim-t</x>
+                <object mime='image/png'>pyaim-t.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/pyicq-t</x>
+                <object mime='image/png'>pyicq-t.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/pymsnt</x>
+                <object mime='image/png'>pymsnt.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/qipinfium</x>
+                <object mime='image/png'>qipinfium.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/qippda</x>
+                <object mime='image/png'>qippda.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/qnext</x>
+                <object mime='image/png'>qnext.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/qq</x>
+                <object mime='image/png'>qq.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/qutim</x>
+                <object mime='image/png'>qutim.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/radio-t</x>
+                <object mime='image/png'>radio-t.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/rnq</x>
+                <object mime='image/png'>rnq.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/rq</x>
+                <object mime='image/png'>rq.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/rss</x>
+                <object mime='image/png'>rss.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/sameplace</x>
+                <object mime='image/png'>sameplace.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/sapo</x>
+                <object mime='image/png'>sapo.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/siejc</x>
+                <object mime='image/png'>siejc.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/sim</x>
+                <object mime='image/png'>sim.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/slick</x>
+                <object mime='image/png'>slick.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/smack</x>
+                <object mime='image/png'>smack.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/smaper</x>
+                <object mime='image/png'>smaper.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/spark</x>
+                <object mime='image/png'>spark.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/sticq</x>
+                <object mime='image/png'>sticq.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/swift</x>
+                <object mime='image/png'>swift.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/talk.google.com</x>
+                <object mime='image/png'>talk.google.com.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/talkgadget.google.com</x>
+                <object mime='image/png'>talkgadget.google.com.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/talkonaut</x>
+                <object mime='image/png'>talkonaut.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/telepathy.freedesktop.org</x>
+                <object mime='image/png'>telepathy.freedesktop.org.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/tipicim</x>
+                <object mime='image/png'>tipicim.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/tkabber</x>
+                <object mime='image/png'>tkabber.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/trillian</x>
+                <object mime='image/png'>trillian.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/trillianbasic</x>
+                <object mime='image/png'>trillianbasic.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/twitter</x>
+                <object mime='image/png'>twitter.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/uim</x>
+                <object mime='image/png'>uim.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/unknown</x>
+                <object mime='image/png'>unknown.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/vacuum</x>
+                <object mime='image/png'>vacuum.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/vkontakte</x>
+                <object mime='image/png'>vkontakte.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/vmicq</x>
+                <object mime='image/png'>vmicq.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/wannachat</x>
+                <object mime='image/png'>wannachat.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/weather.com</x>
+                <object mime='image/png'>weather.com.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/webicq</x>
+                <object mime='image/png'>webicq.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/xeus</x>
+                <object mime='image/png'>xeus.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/xfire</x>
+                <object mime='image/png'>xfire.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/yabber</x>
+                <object mime='image/png'>yabber.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/yahoo</x>
+                <object mime='image/png'>yahoo.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/yaonline</x>
+                <object mime='image/png'>yaonline.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/yaonlinej2me</x>
+                <object mime='image/png'>yaonlinej2me.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/yaonlinesymbian</x>
+                <object mime='image/png'>yaonlinesymbian.png</object>
+        </icon>
+
+        <icon>
+                <x xmlns='name'>clients/yapp</x>
+                <object mime='image/png'>yapp.png</object>
+        </icon>
+
+</icondef>

Added: trunk/plugins/clienticons/pixmap/leechcraft.png
===================================================================
(Binary files differ)


Property changes on: trunk/plugins/clienticons/pixmap/leechcraft.png
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + application/octet-stream

Modified: trunk/plugins/tabbedcon/tabbedcon.tcl
===================================================================
--- trunk/plugins/tabbedcon/tabbedcon.tcl	2010-12-29 17:56:20 UTC (rev 449)
+++ trunk/plugins/tabbedcon/tabbedcon.tcl	2011-01-01 20:24:05 UTC (rev 450)
@@ -1,212 +1,212 @@
-# Copyright (c) 2010 ancestor <xmpp: ancestor at jabber.org>
-# Tabbed tkCon plugin
-# This plugin contains some graphics of KDE 3.5.8 <http://kde.org>
-
-namespace eval tabbedcon {
-    if {[catch {package require tkcon}]} {
-        return
-    }
-
-    variable tbicon
-    variable tabico
-    variable contab
-
-    ::msgcat::mcload [file join [file dirname [info script]] msgs]
-
-    set tbicon "[file dirname [info script]]/pixmaps/console22.png"
-    set tabico "[file dirname [info script]]/pixmaps/console16.png"
-
-    hook::add finload_hook [namespace current]::replace_tkcon_menu_func 35
-}
-
-########################################################################################
-
-proc tabbedcon::replace_tkcon_menu_func {} {
-    if {!$::usetabbar} {
-        return
-    }
-
-    variable tbicon
-    variable tabico
-
-    catch {
-        package require Img
-        
-        image create photo plugins/tabbedcon/toolbar -file $tbicon
-        
-        ::ifacetk::add_toolbar_button plugins/tabbedcon/toolbar \
-            [namespace current]::show_tabbed_console \
-            [::msgcat::mc "Console"]
-        
-        image create photo plugins/tabbedcon/tabbar -file $tabico
-    }
-
-    rename ::plugins::tkcon::add_tkcon_to_tkabber_menu ::plugins::tkcon::add_tkcon_to_tkabber_menu_old
-
-    proc ::plugins::tkcon::add_tkcon_to_tkabber_menu {args} {
-        set menu [.mainframe getmenu debug]
-        
-        $menu add command -label [::msgcat::mc "Show TkCon console"] \
-            -command ::plugins::tabbedcon::show_tabbed_console
-    }
-}
-
-proc tabbedcon::set_con_focus {} {
-    if {[info exists ::tkcon::PRIV(curtab)]} {
-        focus $::tkcon::PRIV(curtab)
-    }
-}
-
-proc tabbedcon::get_tabs_compound {} {
-    set compound none
-
-    foreach tab [.nb pages] {
-        set compound [lindex [.nb.b:$tab configure -compound] end]
-        
-        if {$compound != "none"} {
-            return $compound
-        }
-    }
-
-    return $compound
-}
-
-proc tabbedcon::reconfig_menu {m} {
-    variable contab
-
-    foreach mni {{Main Console} {New Console} \
-                {New Tab} {Delete Tab}} {
-        
-        set midx [$m index $mni]
-        
-        $m entryconfigure $midx -state disabled
-    }
-
-    set midx [$m index {Close Console}]
-
-    $m entryconfigure $midx -command [list ::ifacetk::destroy_tab $contab]
-}
-
-proc tabbedcon::restore_menu {m} {
-    foreach mni {{New Console} {New Tab}} {
-        set midx [$m index $mni]
-        
-        $m entryconfigure $midx -state normal
-    }
-
-    set midx [$m index {Close Console}]
-
-    $m entryconfigure $midx -command [list ::tkcon::Destroy]
-}
-
-proc tabbedcon::create_pseudo_menu {frm} {
-    foreach mnl [winfo children .tkcon.mbar] {
-        switch -glob -- $mnl {
-            *.pop -
-            *.file -
-            *.context   {continue}
-        }
-        
-        set mnn [winfo name $mnl]
-        
-        set m $frm.$mnn.menu
-        
-        set mnb [menubutton $frm.$mnn \
-            -text [string totitle $mnn] \
-            -anchor nw \
-            -menu $m]
-            
-        $mnl clone $m
-        
-        if {$mnn == "console"} {
-            reconfig_menu $m
-        }
-        
-        pack $mnb -side left
-    }
-}
-
-proc tabbedcon::show_tabbed_console {} {
-    variable contab
-
-    set w .tbcon
-    
-    if {[winfo exists $w]} {
-        .nb activate $contab
-        return
-    }
-
-    tkcon hide
-
-    add_win $w -title [::msgcat::mc "Console"] \
-	   -tabtitle [::msgcat::mc "Console"] \
-	   -class TabbedCon \
-       -raisecmd [list [namespace current]::set_con_focus] \
-	   -raise 1
-
-    set contab [lindex [.nb pages] end]
-
-    set tabimg plugins/tabbedcon/tabbar
-
-    set compound [get_tabs_compound]
-
-    if {[lsearch [image names] $tabimg] != -1 && $compound != "none"} {
-        .nb.b:$contab configure -image plugins/tabbedcon/tabbar \
-            -compound $compound
-    }
-
-    set mf [frame $w.mf]
-    pack $mf -side top -anchor w -fill x -pady 2
-
-    set tools [frame $w.tools]
-    pack $tools -side bottom -anchor nw -fill x -pady 5
-
-    button $tools.detach -text [::msgcat::mc "Detach"] \
-        -command [namespace current]::detach_console
-        
-    pack $tools.detach -side left -anchor w
-
-    button $tools.clear -text [::msgcat::mc "Clear"] \
-        -command {clear; ::tkcon::Prompt}
-        
-    pack $tools.clear -side left -anchor w
-
-    if {![info exists ::tkcon::PRIV(root)]} {
-        set ::tkcon::PRIV(showOnStartup) 0
-        set ::tkcon::PRIV(protocol) {tkcon hide}
-        set ::tkcon::PRIV(root) .tkcon
-        set ::tkcon::OPT(exec) ""
-    }
-
-    if {![winfo exists $::tkcon::PRIV(root)]} {
-        ::tkcon::Init
-    }
-
-    create_pseudo_menu $mf
-
-    set nt [::tkcon::InitTab $w]
-
-    pack $nt -fill both -expand yes
-
-    ::tkcon::GotoTab $nt
-
-    set sy [scrollbar $nt.sy -takefocus 0 -command [list $nt yview]]
-
-    $nt configure -yscrollcommand [list $sy set]
-
-    pack $sy -side right -fill both
-
-    bind $nt <Destroy> {
-        ::tkcon::DeleteTab $::tkcon::PRIV(curtab)
-    }
-}
-
-proc tabbedcon::detach_console {} {
-    set atab [.nb raise]
-
-    ::ifacetk::destroy_tab $atab
-
-    restore_menu .tkcon.mbar.console
-    
-    tkcon show
+# Copyright (c) 2010 ancestor <xmpp: ancestor at jabber.org>
+# Tabbed tkCon plugin
+# This plugin contains some graphics of KDE 3.5.8 <http://kde.org>
+
+namespace eval tabbedcon {
+    if {[catch {package require tkcon}]} {
+        return
+    }
+
+    variable tbicon
+    variable tabico
+    variable contab
+
+    ::msgcat::mcload [file join [file dirname [info script]] msgs]
+
+    set tbicon "[file dirname [info script]]/pixmaps/console22.png"
+    set tabico "[file dirname [info script]]/pixmaps/console16.png"
+
+    hook::add finload_hook [namespace current]::replace_tkcon_menu_func 35
+}
+
+########################################################################################
+
+proc tabbedcon::replace_tkcon_menu_func {} {
+    if {!$::usetabbar} {
+        return
+    }
+
+    variable tbicon
+    variable tabico
+
+    catch {
+        package require Img
+        
+        image create photo plugins/tabbedcon/toolbar -file $tbicon
+        
+        ::ifacetk::add_toolbar_button plugins/tabbedcon/toolbar \
+            [namespace current]::show_tabbed_console \
+            [::msgcat::mc "Console"]
+        
+        image create photo plugins/tabbedcon/tabbar -file $tabico
+    }
+
+    rename ::plugins::tkcon::add_tkcon_to_tkabber_menu ::plugins::tkcon::add_tkcon_to_tkabber_menu_old
+
+    proc ::plugins::tkcon::add_tkcon_to_tkabber_menu {args} {
+        set menu [.mainframe getmenu debug]
+        
+        $menu add command -label [::msgcat::mc "Show TkCon console"] \
+            -command ::plugins::tabbedcon::show_tabbed_console
+    }
+}
+
+proc tabbedcon::set_con_focus {} {
+    if {[info exists ::tkcon::PRIV(curtab)]} {
+        focus $::tkcon::PRIV(curtab)
+    }
+}
+
+proc tabbedcon::get_tabs_compound {} {
+    set compound none
+
+    foreach tab [.nb pages] {
+        set compound [lindex [.nb.b:$tab configure -compound] end]
+        
+        if {$compound != "none"} {
+            return $compound
+        }
+    }
+
+    return $compound
+}
+
+proc tabbedcon::reconfig_menu {m} {
+    variable contab
+
+    foreach mni {{Main Console} {New Console} \
+                {New Tab} {Delete Tab}} {
+        
+        set midx [$m index $mni]
+        
+        $m entryconfigure $midx -state disabled
+    }
+
+    set midx [$m index {Close Console}]
+
+    $m entryconfigure $midx -command [list ::ifacetk::destroy_tab $contab]
+}
+
+proc tabbedcon::restore_menu {m} {
+    foreach mni {{New Console} {New Tab}} {
+        set midx [$m index $mni]
+        
+        $m entryconfigure $midx -state normal
+    }
+
+    set midx [$m index {Close Console}]
+
+    $m entryconfigure $midx -command [list ::tkcon::Destroy]
+}
+
+proc tabbedcon::create_pseudo_menu {frm} {
+    foreach mnl [winfo children .tkcon.mbar] {
+        switch -glob -- $mnl {
+            *.pop -
+            *.file -
+            *.context   {continue}
+        }
+        
+        set mnn [winfo name $mnl]
+        
+        set m $frm.$mnn.menu
+        
+        set mnb [menubutton $frm.$mnn \
+            -text [string totitle $mnn] \
+            -anchor nw \
+            -menu $m]
+            
+        $mnl clone $m
+        
+        if {$mnn == "console"} {
+            reconfig_menu $m
+        }
+        
+        pack $mnb -side left
+    }
+}
+
+proc tabbedcon::show_tabbed_console {} {
+    variable contab
+
+    set w .tbcon
+    
+    if {[winfo exists $w]} {
+        .nb activate $contab
+        return
+    }
+
+    tkcon hide
+
+    add_win $w -title [::msgcat::mc "Console"] \
+	   -tabtitle [::msgcat::mc "Console"] \
+	   -class TabbedCon \
+       -raisecmd [list [namespace current]::set_con_focus] \
+	   -raise 1
+
+    set contab [lindex [.nb pages] end]
+
+    set tabimg plugins/tabbedcon/tabbar
+
+    set compound [get_tabs_compound]
+
+    if {[lsearch [image names] $tabimg] != -1 && $compound != "none"} {
+        .nb.b:$contab configure -image $tabimg \
+            -compound $compound
+    }
+
+    set mf [frame $w.mf]
+    pack $mf -side top -anchor w -fill x -pady 2
+
+    set tools [frame $w.tools]
+    pack $tools -side bottom -anchor nw -fill x -pady 5
+
+    button $tools.detach -text [::msgcat::mc "Detach"] \
+        -command [namespace current]::detach_console
+        
+    pack $tools.detach -side left -anchor w
+
+    button $tools.clear -text [::msgcat::mc "Clear"] \
+        -command {clear; ::tkcon::Prompt}
+        
+    pack $tools.clear -side left -anchor w
+
+    if {![info exists ::tkcon::PRIV(root)]} {
+        set ::tkcon::PRIV(showOnStartup) 0
+        set ::tkcon::PRIV(protocol) {tkcon hide}
+        set ::tkcon::PRIV(root) .tkcon
+        set ::tkcon::OPT(exec) ""
+    }
+
+    if {![winfo exists $::tkcon::PRIV(root)]} {
+        ::tkcon::Init
+    }
+
+    create_pseudo_menu $mf
+
+    set nt [::tkcon::InitTab $w]
+
+    pack $nt -fill both -expand yes
+
+    ::tkcon::GotoTab $nt
+
+    set sy [scrollbar $nt.sy -takefocus 0 -command [list $nt yview]]
+
+    $nt configure -yscrollcommand [list $sy set]
+
+    pack $sy -side right -fill both
+
+    bind $nt <Destroy> {
+        ::tkcon::DeleteTab $::tkcon::PRIV(curtab)
+    }
+}
+
+proc tabbedcon::detach_console {} {
+    set atab [.nb raise]
+
+    ::ifacetk::destroy_tab $atab
+
+    restore_menu .tkcon.mbar.console
+    
+    tkcon show
 }
\ No newline at end of file



More information about the Tkabber-dev mailing list