diff -urN tkabber-cvs-orig/presence.tcl tkabber-cvs/presence.tcl --- tkabber-cvs-orig/presence.tcl 2006-06-27 09:24:46 +0400 +++ tkabber-cvs/presence.tcl 2006-07-07 14:21:07 +0400 @@ -350,6 +350,32 @@ } ############################################################################### +array set textstatus_tokens {} + +proc register_textstatus_token {tag code} { + global textstatus_tokens + + set textstatus_tokens($tag) $code +} + +proc expand_textstatus {textstatus} { + global textstatus_tokens + + foreach token [array names textstatus_tokens] { + if { [regexp $token $textstatus] } { + set substr [eval {$textstatus_tokens($token)}] + if {[cequal $substr ""]} { + regsub -all "\s*$token\s*" $textstatus " " textstatus + } else { + regsub -all $token $textstatus $substr textstatus + } + } + } + + return $textstatus +} + +############################################################################### trace variable userstatus w change_our_presence trace variable logoutuserstatus w change_our_presence @@ -365,13 +391,13 @@ switch -- $name1 { logoutuserstatus { set newstatus $logoutuserstatus - set newtextstatus $logouttextstatus + set newtextstatus [expand_textstatus $logouttextstatus] set newpriority $logoutpriority } default { if {[lempty [jlib::connections]]} return set newstatus $userstatus - set newtextstatus $textstatus + set newtextstatus [expand_textstatus $textstatus] set newpriority $userpriority } }