Ouch :s
There is already a way to color nicks in the newCL you don't need to
redo the wheel ;)
Anyway you should look at aMSNPlus that handles the new colouring thing...
The only thing that miss is the Live! color system... If you want to do
it...
Phil
square87 a écrit :
> Hello.
> I written a plugin that it colors nicknames and psms like msn live plus do.
> It works only for contact list. Nick background doesn't work, because with
> canvas is more hard to draw a background (i should create a rectangle under
> the nick, but a background color can be faded). If i'll found a simple way
> i'll do.
>
> the diffi file:
> @@ -1175,6 +1175,12 @@
> this is an event to work on parsednick
>
> @@ -1193,9 +1199,9 @@ and @@ -1205,10 +1211,10 @@
> here i have change splainf with a var in this way we can see bold, italic,
> underline and overstrike style
>
> @@ -1261,6 +1267,11 @@
> this is an event to _decipher_ the nick style
>
> @@ -1324,180 +1335,110 @@
> Here I have write two event to work with psm and i have erased some
> instructions that was repetitive. I try to explain, we have:
>
> if {[::config::getKey psmplace] == 1 } {
> set parsedpsm [::smiley::parseMessageToList " - $psm" 1]
> instructions....
> }
> if {[::config::getKey psmplace] == 2 } {
> set parsedpsm [::smiley::parseMessageToList "\n$psm" 1]
> istructions.... (the same instruction)
> }
>
> now we'll have:
> set parsedpsm ""
> if {[::config::getKey psmplace] == 1 } {
> set parsedpsm [::smiley::parseMessageToList " - $psm" 1]
> } elseif {[::config::getKey psmplace] == 2 } {
> set parsedpsm [::smiley::parseMessageToList "\n$psm" 1]
> }
> istructions...
>
> we will see colored nick in contact list if someday somebody apply the
> differences. In this case I'll post the plugin on forum.
> What do you think about?
> Square87
>
>
> ------------------------------------------------------------------------
>
> Index: guicontactlist.tcl
> ===================================================================
> --- guicontactlist.tcl (revision 8233)
> +++ guicontactlist.tcl (working copy)
> @@ -1175,6 +1175,12 @@
> set relxnickpos $xnickpos
> set relynickpos $ypos
>
> + #this event could be used by colorednicks plugin
> + set evPar(email) email
> + set evPar(parsednick) parsednick
> + ::plugins::PostEvent parsed_nick evPar
> + set familyfont "splainf"
> +
> foreach unit $parsednick {
> if {[lindex $unit 0] == "text"} {
> # Check if we are still allowed to write text,\
> @@ -1193,9 +1199,9 @@
>
> # Check if text is not too long and should be
> truncated, then
> # first truncate it and restore it in $textpart
> and set the linefull
> - if {[expr {$relxnickpos + [font measure splainf
> $textpart]}] > $maxwidth} {
> + if {[expr {$relxnickpos + [font measure
> $familyfont $textpart]}] > $maxwidth} {
> set textpart
> [::guiContactList::truncateText $textpart \
> - [expr {$maxwidth -
> $relxnickpos}] splainf]
> + [expr {$maxwidth -
> $relxnickpos}] $familyfont]
>
> #If we don't truncate we don't put
> ellipsis
> #!$maxwidth already left space for the
> ellipsis
> @@ -1205,10 +1211,10 @@
> set linefull 1
> }
>
> - # Draw the text
> + # draw the text
> $canvas create text $relxnickpos $ynickpos
> -text $textpart -anchor w -fill \
> - $relnickcolour -font splainf -tags
> [list contact $tag nicktext $main_part]
> - set textwidth [font measure splainf $textpart]
> + $relnickcolour -font $familyfont -tags
> [list contact $tag nicktext $main_part]
> + set textwidth [font measure $familyfont
> $textpart]
>
> # Append underline coords
> set yunderline [expr {$ynickpos + $textheight +
> 1}]
> @@ -1261,6 +1267,11 @@
> set relnickcolour $nickcolour
> }
> } else {
> + set evPar(unit) unit
> + set evPar(relnickcolour) relnickcolour
> + set evPar(familyfont) familyfont
> + ::plugins::PostEvent parsed_unit evPar
> +
> status_log "Unknown item in parsed nickname:
> $unit"
> }
> #END the foreach loop
> @@ -1324,180 +1335,110 @@
> if {$psm != "" && [::config::getKey emailsincontactlist] == 0 }
> {
>
> set relnickcolour $nickcolour
> + set parsedpsm ""
>
> if {[::config::getKey psmplace] == 1 } {
> set parsedpsm [::smiley::parseMessageToList " -
> $psm" 1]
> - foreach unit $parsedpsm {
> - if {[lindex $unit 0] == "text"} {
> - # Check if we are still allowed
> to write text
> - if { $linefull } {
> - continue
> - }
> -
> - # Store the text as a string
> - set textpart [lindex $unit 1]
> -
> - # Check if it's really
> containing text
> - if {$textpart == ""} {
> - continue
> - }
> -
> - # Check if text is not too long
> and should be truncated, then
> - # first truncate it and restore
> it in $textpart and set the linefull
> - if {[expr {$relxnickpos + [font
> measure sitalf $textpart]}] > $maxwidth} {
> - set textpart
> [::guiContactList::truncateText $textpart \
> - [expr
> {$maxwidth - $relxnickpos}] sitalf]
> - set textpart
> "$textpart$ellips"
> -
> - # This line is full,
> don't draw anything anymore before we start a new line
> - set linefull 1
> - }
> -
> - # Draw the text
> - $canvas create text
> $relxnickpos $ynickpos -text $textpart -anchor w -fill \
> - $relnickcolour -font
> sitalf -tags [list contact $tag psmtext $main_part]
> - set textwidth [font measure
> sitalf $textpart]
> -
> - # Append underline coords
> - set yunderline [expr {$ynickpos
> + $textheight + 1}]
> - lappend underlinst [list [expr
> {$relxnickpos - $xpos}] [expr {$yunderline - $ypos}] \
> - $textwidth
> $relnickcolour]
> -
> - # Change the coords
> - set relxnickpos [expr
> $relxnickpos + $textwidth]
> - } elseif { [lindex $unit 0] == "smiley"
> } {
> - # Check if we are still allowed
> to draw smileys
> - if { $linefull } {
> - continue
> - }
> -
> - set smileyname [lindex $unit 1]
> -
> - if { [expr {$relxnickpos +
> [image width $smileyname]}] > $maxwidth } {
> - # This line is full,
> don't draw anything anymore before we start a new line
> - set linefull 1
> -
> - $canvas create text
> $relxnickpos $ynickpos -text $ellips -anchor w \
> - -fill
> $relnickcolour -font sitalf -tags [list contact $tag psmtext $main_part]
> - set textwidth [font
> measure sitalf $ellips]
> -
> - # Append underline
> coords
> - set yunderline [expr
> {$ynickpos + $textheight + 1}]
> - lappend underlinst
> [list [expr {$relxnickpos - $xpos}] \
> - [expr
> {$yunderline - $ypos}] $textwidth $relnickcolour]
> - continue
> - }
> -
> - # Draw the smiley
> - $canvas create image
> $relxnickpos $ynickpos -image $smileyname -anchor w \
> - -tags [list contact
> $tag psmsmiley $main_part]
> -
> - # Change the coords
> - set relxnickpos [expr
> {$relxnickpos + [image width $smileyname]}]
> - } elseif {[lindex $unit 0] ==
> "newline"} {
> - set relxnickpos $xnickpos
> - set ynickpos [expr {$ynickpos +
> [image height $img]}]
> - set ychange [expr {$ychange +
> [image height $img]}]
> -
> - # New line, we can draw again !
> - set linefull 0
> - } elseif {[lindex $unit 0] == "colour"
> && !$force_colour} {
> - # A plugin like aMSN Plus!
> could make the text lists
> - # contain an extra variable for
> colourchanges
> - set relnickcolour [lindex $unit
> 1]
> - if {$relnickcolour == "reset"} {
> - set relnickcolour
> $nickcolour
> - }
> - }
> - # END the foreach loop
> - }
> } elseif {[::config::getKey psmplace] == 2 } {
> set parsedpsm [::smiley::parseMessageToList
> "\n$psm" 1]
> + }
>
> - foreach unit $parsedpsm {
> - if {[lindex $unit 0] == "text"} {
> - # Check if we are still allowed
> to write text
> - if { $linefull } {
> - continue
> - }
> + #this settings and event are used by colorednicks plugin
> + set parsednick $parsedpsm
> + set evPar(parsednick) parsednick
> + ::plugins::PostEvent parsed_nick evPar
> + set parsedpsm $parsednick
> + set familyfont "sitalf"
> +
> + foreach unit $parsedpsm {
> + if {[lindex $unit 0] == "text"} {
> + # Check if we are still allowed to
> write text
> + if { $linefull } {
> + continue
> + }
>
> - # Store the text as a string
> - set textpart [lindex $unit 1]
> + # Store the text as a string
> + set textpart [lindex $unit 1]
>
> - # Check if it's really
> containing text
> - if {$textpart == ""} {
> - continue
> - }
> + # Check if it's really containing text
> + if {$textpart == ""} {
> + continue
> + }
>
> - # Check if text is not too long
> and should be truncated, then
> - # first truncate it and restore
> it in $textpart and set the linefull
> - if {[expr {$relxnickpos + [font
> measure sitalf $textpart]}] > $maxwidth} {
> - set textpart
> [::guiContactList::truncateText $textpart \
> - [expr
> {$maxwidth - $relxnickpos}] sitalf]
> - set textpart
> "$textpart$ellips"
> + # Check if text is not too long and
> should be truncated, then
> + # first truncate it and restore it in
> $textpart and set the linefull
> + if {[expr {$relxnickpos + [font measure
> $familyfont $textpart]}] > $maxwidth} {
> + set textpart
> [::guiContactList::truncateText $textpart \
> + [expr {$maxwidth -
> $relxnickpos}] $familyfont]
> + set textpart "$textpart$ellips"
>
> - # This line is full,
> don't draw anything anymore before we start a new line
> - set linefull 1
> - }
> + # This line is full, don't draw
> anything anymore before we start a new line
> + set linefull 1
> + }
>
> - # Draw the text
> - $canvas create text
> $relxnickpos $ynickpos -text $textpart -anchor w -fill \
> - $relnickcolour -font
> sitalf -tags [list contact $tag psmtext $main_part]
> - set textwidth [font measure
> sitalf $textpart]
> + # Draw the text
> + $canvas create text $relxnickpos
> $ynickpos -text $textpart -anchor w -fill \
> + $relnickcolour -font
> $familyfont -tags [list contact $tag psmtext $main_part]
> + set textwidth [font measure $familyfont
> $textpart]
>
> + # Append underline coords
> + set yunderline [expr {$ynickpos +
> $textheight + 1}]
> + lappend underlinst [list [expr
> {$relxnickpos - $xpos}] [expr {$yunderline - $ypos}] \
> + $textwidth $relnickcolour]
> +
> + # Change the coords
> + set relxnickpos [expr $relxnickpos +
> $textwidth]
> + } elseif { [lindex $unit 0] == "smiley" } {
> + # Check if we are still allowed to draw
> smileys
> + if { $linefull } {
> + continue
> + }
> +
> + set smileyname [lindex $unit 1]
> +
> + if { [expr {$relxnickpos + [image width
> $smileyname]}] > $maxwidth } {
> + # This line is full, don't draw
> anything anymore before we start a new line
> + set linefull 1
> +
> + $canvas create text
> $relxnickpos $ynickpos -text $ellips -anchor w \
> + -fill $relnickcolour
> -font sitalf -tags [list contact $tag psmtext $main_part]
> + set textwidth [font measure
> sitalf $ellips]
> +
> # Append underline coords
> set yunderline [expr {$ynickpos
> + $textheight + 1}]
> - lappend underlinst [list [expr
> {$relxnickpos - $xpos}] [expr {$yunderline - $ypos}] \
> - $textwidth
> $relnickcolour]
> + lappend underlinst [list [expr
> {$relxnickpos - $xpos}] \
> + [expr {$yunderline -
> $ypos}] $textwidth $relnickcolour]
> + continue
> + }
>
> - # Change the coords
> - set relxnickpos [expr
> {$relxnickpos + $textwidth}]
> - } elseif { [lindex $unit 0] == "smiley"
> } {
> - # Check if we are still allowed
> to draw smileys
> - if { $linefull } {
> - continue
> - }
> -
> - set smileyname [lindex $unit 1]
> -
> - if { [expr {$relxnickpos +
> [image width $smileyname]}] > $maxwidth } {
> - # This line is full,
> don't draw anything anymore before we start a new line
> - set linefull 1
> -
> - $canvas create text
> $relxnickpos $ynickpos -text $ellips -anchor w \
> - -fill
> $relnickcolour -font sitalf -tags [list contact $tag psmtext $main_part]
> - set textwidth [font
> measure sitalf $ellips]
> -
> - # Append underline
> coords
> - set yunderline [expr
> {$ynickpos + $textheight + 1}]
> - lappend underlinst
> [list [expr {$relxnickpos - $xpos}] \
> - [expr
> {$yunderline - $ypos}] $textwidth $relnickcolour]
> - continue
> - }
> -
> - # Draw the smiley
> - $canvas create image
> $relxnickpos $ynickpos -image $smileyname -anchor w \
> - -tags [list contact
> $tag psmsmiley $main_part]
> -
> - # Change the coords
> - set relxnickpos [expr
> {$relxnickpos + [image width $smileyname]}]
> - } elseif {[lindex $unit 0] ==
> "newline"} {
> - set relxnickpos $xnickpos
> - set ynickpos [expr {$ynickpos +
> [image height $img]}]
> - set ychange [expr {$ychange +
> [image height $img]}]
> -
> - # New line, we can draw again !
> - set linefull 0
> - } elseif {[lindex $unit 0] == "colour"
> && !$force_colour} {
> - # A plugin like aMSN Plus!
> could make the text lists
> - # contain an extra variable for
> colourchanges
> - set relnickcolour [lindex $unit
> 1]
> - if {$relnickcolour == "reset"} {
> - set relnickcolour
> $nickcolour
> - }
> + # Draw the smiley
> + $canvas create image $relxnickpos
> $ynickpos -image $smileyname -anchor w \
> + -tags [list contact $tag
> psmsmiley $main_part]
> +
> + # Change the coords
> + set relxnickpos [expr {$relxnickpos +
> [image width $smileyname]}]
> + } elseif {[lindex $unit 0] == "newline"} {
> + set relxnickpos $xnickpos
> + set ynickpos [expr {$ynickpos + [image
> height $img]}]
> + set ychange [expr {$ychange + [image
> height $img]}]
> +
> + # New line, we can draw again !
> + set linefull 0
> + } elseif {[lindex $unit 0] == "colour" &&
> !$force_colour} {
> + # A plugin like aMSN Plus! could make
> the text lists
> + # contain an extra variable for
> colourchanges
> + set relnickcolour [lindex $unit 1]
> + if {$relnickcolour == "reset"} {
> + set relnickcolour $nickcolour
> }
> - # END the foreach loop
> + } else {
> + set evPar(unit) unit
> + set evPar(relnickcolour) relnickcolour
> + set evPar(familyfont) familyfont
> + ::plugins::PostEvent parsed_unit evPar
> + set familyfont "$familyfont italic"
> }
> + # END the foreach loop
> }
> } ; #end psm drawing
>
>
>
> ------------------------------------------------------------------------
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys-and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Amsn-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/amsn-devel
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Amsn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/amsn-devel