Heya :) I've been testing your patch and I've only got one issue with it. Even with the second patch when I choose the "Change Display picture..." option from the chatwindow, it doesn't default to my pictures.. I can choose my user without problem it would just be better to default to my pictures without asking the user.
Any way off to bed. Thanks! On 4 Jan 2007, at 20:37, Cristofaro Del Prete wrote: > I'm very sorry... but, as according with Murphy's Law, the last bug is > found always *after* the release... > Here's a new patch including a little fix for a case I forgot. > > Cristofaro Del Prete ha scritto: >> Hi, >> I've just finished implementing custom display pictures, and I >> thought >> that, as is a new feature, it was better to post it here. >> >> This implementation of custom DP relies on the dpbrowser snit object, >> that was almost complete (I just addded some bits here and there) and >> that was already used in the contact properties screen. >> >> --- What's Done --- >> >> * Replaced all the calls to pictureBrowser with equivalent calls to >> dpBrowser >> * Added to the display picture's popup menu (in the chat window) the >> options to change/remove custom display pictures >> * Added ability to select image in dpbrowser >> * Generalized dpBrowser and related functions to work also with other >> contacts, not just with "self" user >> * Added controls in contact properties screen (settings tab) to >> change/remove custom display pictures >> * Marked with TODOs all the procedures related to picturebrowser for >> eventual removal >> >> --- What's Still To Do --- >> >> * Translate dpBrowser labels and buttons >> * Translate label in the properties screen >> * Translate new entries in display picture's popup menu >> >> Please comment my work, and make me know if you liked it. > > Index: automsg.tcl > =================================================================== > --- automsg.tcl (revisione 7718) > +++ automsg.tcl (copia locale) > @@ -219,7 +219,7 @@ > $path add separator > $path add command -label "[trans changenick]..." -command > cmsn_change_name > > - $path add command -label "[trans changedisplaypic]..." -command > pictureBrowser > + $path add command -label "[trans changedisplaypic]..." -command > dpBrowser > > $path add command -label "[trans editmyprofile]..." -command > "::hotmail::hotmail_profile" > > Index: gui.tcl > =================================================================== > --- gui.tcl (revisione 7718) > +++ gui.tcl (copia locale) > @@ -1764,8 +1764,26 @@ > } > #Load Change Display Picture window > $win.picmenu add separator > - $win.picmenu add command -label "[trans changedisplaypic]..." - > command pictureBrowser > + $win.picmenu add command -label "[trans changedisplaypic]..." - > command dpBrowser > + foreach user $users { > + $win.picmenu add command -label "[trans > changecustomuserpic > $user]" \ > + -command "autoChangeCustomDp $user" > + } > > + #Section to remove custom display pictures > + set first_one 0 > + foreach user $users { > + if {[::abook::getContactData $user customdp ] != ""} { > + # The separator is added only if the section is > really going > to be draw > + if {$first_one == "0"} { > + $win.picmenu add separator > + set first_one 1 > + } > + $win.picmenu add command -label "[trans > removecustomuserpic > $user]" \ > + -command "autoRemoveCustomDp $user" > + } > + } > + > set user [$win.f.bottom.pic.image cget -image] > if { $user != "displaypicture_std_none" && $user != > "displaypicture_std_self" } { > #made easy for if we would change the image names > @@ -3245,7 +3263,7 @@ > #change nick > $accnt add command -label "[trans changenick]..." -command > cmsn_change_name -state disabled > #change dp > - $accnt add command -label "[trans changedisplaypic]..." -command > pictureBrowser -state disabled > + $accnt add command -label "[trans changedisplaypic]..." -command > dpBrowser -state disabled > #------------------- > $accnt add separator > #go to inbox > @@ -7094,8 +7112,8 @@ > } > > > -proc dpBrowser {} { > - global selected_path > +proc dpBrowser { {target_user "self" } } { > + global selected_path selected_image HOME > > package require dpbrowser > > @@ -7121,6 +7139,18 @@ > #Sorts contacts > set contactlist [lsort -dictionary $contact_list] > > + # Select current DP (custom or not) for target user > + if { $target_user != "self" } { > + if { [::abook::getContactData $target_user customdp] != "" } { > + set image_name [::abook::getContactData $target_user > customdp ""] > + } else { > + set image_name [::abook::getContactData $target_user > displaypicfile ""] > + } > + if {$image_name != ""} { > + set selected_path [file join $HOME displaypic cache > [filenoext > $image_name].png] > + set selected_image "[filenoext $selected_path].png" > + } > + } > > ################ > # First column # > @@ -7135,33 +7165,52 @@ > #combobox to choose user which configures the widget with -user > $user > > set combo $w.moredpstitle.combo > - combobox::combobox $combo -highlightthickness 0 -width 22 -font > splainf -exportselection true -command "configuredpbrowser" - > editable false -bg #FFFFFF > + combobox::combobox $combo -highlightthickness 0 -width 22 -font > splainf -exportselection true -command "configuredpbrowser > $target_user" -editable false -bg #FFFFFF > $combo list delete 0 end > $combo list insert end "Select a contact:" > + > foreach contact $contactlist { > #put the name of the device in the widget > $combo list insert end $contact > + if {$contact == $target_user} { > + set selection [expr [$combo list index end] - 1] > + } > } > - catch {$combo select 0} > + > + # If we are choosing a custom DP for a contact, show his cache in > the lower pane > + if {$target_user == "self"} { > + catch {$combo select 0} > + set selected_user "" > + } else { > + catch {$combo select $selection} > + set selected_user $target_user > + } > > pack $w.moredpstitle.text -side left > pack $w.moredpstitle.combo -side right > > - ::dpbrowser $w.mydps -width 3 -user self > + ::dpbrowser $w.mydps -width 3 -user self -post_select > updateDpBrowserSelection > > - ::dpbrowser $w.moredps -width 3 > - > + ::dpbrowser $w.moredps -width 3 -user $selected_user -post_select > updateDpBrowserSelection -picinuse "yes" > + > ################# > # second column # > ################# > > #preview > label $w.dppreviewtxt -text "Preview:" > - label $w.dppreview -image displaypicture_std_self > + if {$target_user == "self"} { > + label $w.dppreview -image displaypicture_std_self > + } else { > + if { $image_name == "" } { > + label $w.dppreview -image displaypicture_std_none > + } else { > + label $w.dppreview -image [image create photo > [TmpImgName] - > file $selected_path -format cximage] > + } > + } > > #browse button > button $w.browsebutton -command "set selected_path \ > [pictureChooseFile\]" -text "[trans browse]..." > -#TODO: pictureChooseFile to be changed to our working and it > should update our preview > > #under this button is space for more buttons we'll make a frame > for so plugins can pack stuff in this frame > frame $w.pluginsframe -bd 0 > @@ -7172,7 +7221,7 @@ > # lower pane # > ################# > frame $w.lowerpane -bd 0 > - button $w.lowerpane.ok -text "[trans ok]" -command > "set_displaypic \${selected_image};destroy $w" > + button $w.lowerpane.ok -text "[trans ok]" -command > "set_displaypic \${selected_image} $target_user;destroy $w" > button $w.lowerpane.cancel -text "[trans cancel]" -command > "destroy .dpbrowser" > pack $w.lowerpane.ok $w.lowerpane.cancel -side right -padx 5 > > @@ -7194,13 +7243,34 @@ > } > > > -proc configuredpbrowser {combowidget selection} { > +proc configuredpbrowser {target combowidget selection} { > #puts "$combowidget $selection" > if {$selection == "Select a contact:"} {set selection ""} > - [winfo toplevel $combowidget].moredps configure -user $selection > + if {$selection == $target} { > + [winfo toplevel $combowidget].moredps configure -user > $selection > -picinuse "no" > + } else { > + [winfo toplevel $combowidget].moredps configure -user > $selection > -picinuse "yes" > + } > } > > +# This procedure is called back from the dpbrowser pane when a > picture is selected > +proc updateDpBrowserSelection { browser } { > + global selected_image > + set w [winfo toplevel $browser] > + # Get the path of the selected image and unselect all images in > the other pane > + if { [list $w.mydps] == $browser } { > + set selected_path [$w.mydps getselection] > + $w.moredps unselect_all > + } else { > + set selected_path [$w.moredps getselection] > + $w.mydps unselect_all > + } > + set image_name [image create photo [TmpImgName] -file > $selected_path -format cximage] > + $w.dppreview configure -image $image_name > + set selected_image "[filenoext $selected_path].png" > +} > > +# TODO: no more used, delete if not needed > proc pictureBrowser {} { > global selected_image > > @@ -7226,7 +7296,7 @@ > label .picbrowser.mypic -image displaypicture_std_self - > background white -borderwidth 2 -relief solid > label .picbrowser.mypic_label -text "[trans mypic]" -font splainf > > - button .picbrowser.browse -command "set selected_image \ > [pictureChooseFile\]; reloadAvailablePics" -text "[trans browse]..." > + button .picbrowser.browse -command "set selected_image \ > [old_pictureChooseFile\]; reloadAvailablePics" -text "[trans > browse]..." > button .picbrowser.delete -command > "pictureDeleteFile ;reloadAvailablePics" -text "[trans delete]" > button .picbrowser.purge -command "purgePictures; > reloadAvailablePics" -text "[trans purge]..." > button .picbrowser.ok -command "set_displaypic \$ > {selected_image};destroy .picbrowser" -text "[trans ok]" > @@ -7282,6 +7352,7 @@ > moveinscreen .picbrowser 30 > } > > +# TODO: no more used, delete if not needed > proc purgePictures {} { > global HOME > > @@ -7293,6 +7364,7 @@ > } > } > > +# TODO: no more used, delete if not needed > proc deleteDisplayPicsInDir { folder } { > foreach filename [glob -nocomplain -directory $folder *.png] { > catch { file delete $filename } > @@ -7305,6 +7377,7 @@ > } > } > > +# TODO: no more used, delete if not needed > proc getPictureDesc {filename} { > if { [file readable "[filenoext $filename].dat"] } { > set f [open "[filenoext $filename].dat"] > @@ -7323,6 +7396,7 @@ > return "" > } > > +# TODO: no more used, delete if not needed > proc addPicture {the_image pic_text filename} { > frame .picbrowser.pics.text.$the_image -borderwidth 0 - > highlightthickness 0 -background white -highlightbackground black > label .picbrowser.pics.text.$the_image.pic -image $the_image - > relief flat -borderwidth 0 -highlightthickness 2 \ > @@ -7338,6 +7412,7 @@ > .picbrowser.pics.text insert end "\n" > } > > +# TODO: no more used, delete if not needed > proc reloadAvailablePics { } { > global HOME image_names show_cached_pics skin > > @@ -7498,7 +7573,7 @@ > return $selfile > } > > - > +# TODO: no more used, delete if not needed > proc pictureDeleteFile { {filename ""} {widget .picbrowser.mypic} } { > global selected_image HOME > > @@ -7545,13 +7620,13 @@ > } > > if { ![catch {convert_image_plus $file displaypic $convertsize} > > res]} { > - if {![winfo exists .picbrowser]} { > - pictureBrowser > + if {![winfo exists .dpbrowser]} { > + dpBrowser > } > > set image_name [image create photo [TmpImgName] -file > [::skin::GetSkinFile "displaypic" "[filenoext [file tail > $file]].png"] -format cximage] > status_log $image_name red > - .picbrowser.mypic configure -image $image_name > + .dpbrowser.dppreview configure -image $image_name > set selected_image "[filenoext [file tail $file]].png" > > set desc_file "[filenoext [file tail $file]].dat" > @@ -7616,22 +7691,29 @@ > return $dpsize > } > > -proc set_displaypic { file } { > - catch {image delete displaypicture_std_self} > - catch {image delete displaypicture_not_self} > - if { $file != "" } { > - ::config::setKey displaypic $file > - status_log "set_displaypic: File set to $file\n" blue > - load_my_pic > - load_my_smaller_pic > - ::MSN::changeStatus [set ::MSN::myStatus] > - save_config > +proc set_displaypic { file { email "self" } } { > + if { $email == "self" } { > + catch {image delete displaypicture_std_self} > + catch {image delete displaypicture_not_self} > + if { $file != "" } { > + ::config::setKey displaypic $file > + status_log "set_displaypic: File set to $file\n" blue > + load_my_pic > + load_my_smaller_pic > + ::MSN::changeStatus [set ::MSN::myStatus] > + save_config > + } else { > + status_log "set_displaypic: Setting displaypic to > displaypicture_std_none\n" blue > + clear_disp > + load_my_pic 1 > + load_my_smaller_pic > + ::MSN::changeStatus [set ::MSN::myStatus] > + } > } else { > - status_log "set_displaypic: Setting displaypic to > displaypicture_std_none\n" blue > - clear_disp > - load_my_pic 1 > - load_my_smaller_pic > - ::MSN::changeStatus [set ::MSN::myStatus] > + set temp [filenoext $file] > + status_log "$temp" > + global customdp_$email > + set customdp_$email $file > } > } > > @@ -7650,6 +7732,31 @@ > bind $pgBuddyTop.bigstate <<Button3>> {tk_popup .my_menu %X %Y} > } > } > + > +# Through these function the custom DP can be changed without > using the properties screen > +proc autoChangeCustomDp { email } { > + global customdp_$email > + dpBrowser $email > + tkwait window .dpbrowser > + # Backup old custom dp > + set old_customdp [::abook::getContactData $email customdp ""] > + if {[set customdp_$email] != $old_customdp} { > + # Store custom dp > + ::abook::setAtomicContactData $email customdp [set > customdp_$email] > + # Update display picture > + ::skin::getDisplayPicture $email 1 > + ::skin::getLittleDisplayPicture $email 1 > + } > +} > + > +proc autoRemoveCustomDp { email } { > + # Remove custom dp > + ::abook::setAtomicContactData $email customdp "" > + # Update display picture > + ::skin::getDisplayPicture $email 1 > + ::skin::getLittleDisplayPicture $email 1 > +} > + > ###################### Protocol Debugging ########################### > if { $initialize_amsn == 1 } { > global degt_protocol_window_visible degt_command_window_visible > Index: skins.tcl > =================================================================== > --- skins.tcl (revisione 7718) > +++ skins.tcl (copia locale) > @@ -238,8 +238,16 @@ > return $picName > } > > - set filename [::abook::getContactData $email displaypicfile ""] > - set file "[file join $HOME displaypic cache ${filename}].png" > + if { [::abook::getContactData $email customdp] != "" } { > + set filename [::abook::getContactData $email customdp > ""] > + # As custom DP can also be stored outside the cache > folder, > + # customdp stores the full path to the image > + set file $filename > + } else { > + set filename [::abook::getContactData $email > displaypicfile ""] > + set file "[file join $HOME displaypic cache > ${filename}].png" > + } > + > if { $filename != "" && [file readable "$file"] } { > catch {image create photo $picName -file "$file" > -format cximage} > } else { > @@ -282,9 +290,16 @@ > return $picName > } > > - set filename [::abook::getContactData $email displaypicfile ""] > - set file "[file join $HOME displaypic cache ${filename}].png" > - > + if { [::abook::getContactData $email customdp] != "" } { > + set filename [::abook::getContactData $email customdp > ""] > + # As custom DP can also be stored outside the cache > folder, > + # customdp stores the full path to the image > + set file $filename > + } else { > + set filename [::abook::getContactData $email > displaypicfile ""] > + set file "[file join $HOME displaypic cache > ${filename}].png" > + } > + > if { $filename != "" && [file readable $file] } { > catch {image create photo $picName -file "$file" > -format cximage} > } else { > Index: utils/dpbrowser/dpbrowser.tcl > =================================================================== > --- utils/dpbrowser/dpbrowser.tcl (revisione 7718) > +++ utils/dpbrowser/dpbrowser.tcl (copia locale) > @@ -7,8 +7,15 @@ > option -width -default 5 > # option -height -default 500 > option -bg -default white -configuremethod SetConfig > + option -bg_hl -default DarkBlue -configuremethod SetConfig > option -mode -default "properties" > #modes "properties" where you right-click with actions and mode > "select" where left click sets as your image preview for new pic > browser" > + > + # When using select mode, it's important to pass the name of a > procedure through this option. > + # Otherwise, the parent window will not react to the change of > selection. > + option -post_select -default "" > + option -picinuse -default "no" -configuremethod SetConfig > + option -disableselect -default "no" > > # option -addinuse -default 0 -configuremethod SetConfig > > @@ -55,7 +62,7 @@ > > if {$email == "self"} { > set cachefiles [glob -nocomplain -directory [file join > $HOME > displaypic] *.dat] > - set pic_in_use [::abook::getContactData $email > displaypicfile ""] > + set pic_in_use "" > } else { > set cachefiles [glob -nocomplain -directory [file join > $HOME > displaypic cache] *.dat] > set pic_in_use [::abook::getContactData $email > displaypicfile ""] > @@ -75,7 +82,7 @@ > > foreach file $cachefiles { > #exclude the image the user is currently using > - if { [string first $pic_in_use $file] == -1 } { > + if { $options(-picinuse) != "no" || [string > first $pic_in_use > $file] == -1 } { > set fd [open $file] > > > @@ -91,25 +98,19 @@ > if { [catch { image create photo > userDP_${email}_$i -file > [filenoext $file].png -format cximage }] } { continue } > ::picture::ResizeWithRatio > userDP_${email}_$i 96 96 > set entry $frame.${i}_shell > - frame $entry -bg $color -bd 0 -relief > flat > + frame $entry -bg $color -bd 2 -relief > flat > > label $entry.img -image > userDP_${email}_$i -bg $color > bind $entry <Destroy> "catch { image > delete userDP_${email}_$i}" > - if {$email == "self"} { > - bind $entry.img <ButtonPress-3> > \ > - [list $self > dp_popup_menu %X %Y\ > - [filenoext $file].png > $entry.img $email] > - #selection binding > - bind $entry.img <ButtonPress-1> > [list $self selectdp > [filenoext $file].png $entry.img] > - } else { > - bind $entry.img <ButtonPress-3> > \ > - [list $self > dp_popup_menu %X %Y\ > - [filenoext $file].png > $entry.img $email] > - } > + bind $entry.img <ButtonPress-3> \ > + [list $self dp_popup_menu %X %Y\ > + [filenoext $file].png > $entry.img $email] > + #selection binding > + bind $entry.img <ButtonPress-1> [list > $self selectdp > [filenoext $file].png $entry.img] > > #TODO: a tooltip with the full size image > - bind $entry.img <Enter> "" > - bind $entry.img <Leave> "" > +# bind $entry.img <Enter> "showtooltip %X > %Y [filenoext > $file].png" > +# bind $entry.img <Leave> "showtooltip %X > %Y [filenoext > $file].png" > > label $entry.text -text [lindex $greps > 1] -bg $color > > @@ -181,7 +182,7 @@ > -label "[trans copytoclipboard [string tolower [trans > filename]]]" \ > -command [list clipboard clear ; clipboard append > $filename] > $the_menu add command -label "[trans delete]" \ > - -command [list pictureDeleteFile $filename $widget] > + -command [list $self deleteentry $filename $widget] > # $the_menu add command -label "Set as custom display picture for > > this user" \ > -command [list ::amsn::messageBox "Sorry, not yet > implemented" > ok error [trans failed]] > $the_menu add command -label "[trans setasmydp]" \ > @@ -190,14 +191,46 @@ > } > > method selectdp { file imgwidget } { > - global selected_path > - if { [catch { image create photo my_pic -file $file -format > cximage }] } { return } > - set selected_path $file > - #select the image in the widget ? > + if {$options(-disableselect) == "no" } { > + global selected_path > + if { [catch { image create photo my_pic -file $file > -format > cximage }] } { return } > + set selected_path $file > + # Highlight only the selected image > + for {set i 0} {[winfo exists [$self.sw.sf > getframe].${i} > _shell]} {incr i} { > + set entry [$self.sw.sf getframe].${i}_shell > + set entry_img $entry.img > + if { $entry_img != $imgwidget } { > > + $entry configure -background > $options(-bg) > + } else { > + $entry configure -background > $options(-bg_hl) > + } > + } > + # Execute the post-select procedure, sending the > browser window > as parameter > + if { $options(-post_select) != "" } { > + eval $options(-post_select) $self > + } > + } > } > + > + method unselect_all { } { > + for {set i 0} {[winfo exists [$self.sw.sf > getframe].${i}_shell]} > {incr i} { > + set entry [$self.sw.sf getframe].${i}_shell > + $entry configure -background $options(-bg) > + } > + > + } > > method getselection {} { > global selected_path > return $selected_path > } > + > + method deleteentry {filename widget} { > + global selected_path > + if {$selected_path == $filename} { > + set selected_path "" > + } > + pictureDeleteFile $filename $widget > + $self fill > + } > } > Index: abook.tcl > =================================================================== > --- abook.tcl (revisione 7718) > +++ abook.tcl (copia locale) > @@ -41,7 +41,7 @@ > > # This list stores the names of the fields about the visual > representation of the buddy. > # When this fields gets changed, we fire an event to redraw > that > contact on our CL. > - variable VisualData [list nick customnick customfnick > cust_p4c_name customcolor] > + variable VisualData [list nick customnick customfnick > cust_p4c_name customcolor customdp] > > global pgc pcc > } > @@ -1077,7 +1077,7 @@ > set nbIdent [$nb getframe userDPs] > > if { ![winfo exists $nbIdent.otherpics]} { > - ::dpbrowser $nbIdent.otherpics -user $email > + ::dpbrowser $nbIdent.otherpics -user $email > -disableselect > pack $nbIdent.otherpics -expand true -fill both > } > } > @@ -1101,7 +1101,7 @@ > > > proc showUserProperties { email } { > - global colorval_$email showcustomsmileys_$email ignorecontact_ > $email HOME > + global colorval_$email customdp_$email showcustomsmileys_$email > > ignorecontact_$email HOME > set w ".user_[::md5::md5 $email]_prop" > if { [winfo exists $w] } { > raise $w > @@ -1334,6 +1334,19 @@ > pack $nbSettings.fNick.fColor.bset -side left -padx 3 -pady 2 > pack $nbSettings.fNick.fColor.brem -side left -padx 3 -pady 2 > > + # The custom display pic frame > + label $nbSettings.fNick.lDispl -text "[trans customdp]:" > + frame $nbSettings.fNick.fDispl -relief flat > + set customdp_$email [::abook::getContactData $email customdp] > + set customdp_img_$email [image create photo [TmpImgName] -file > [set customdp_$email]] > + > + label $nbSettings.fNick.fDispl.dp -image [set customdp_img_$ > {email}] -borderwidth 0 -relief flat > + button $nbSettings.fNick.fDispl.bset -text "[trans change]" - > command "::abookGui::ChangeCustomDp $email $nbSettings" > + button $nbSettings.fNick.fDispl.brem -text "[trans delete]" - > command "::abookGui::RemoveCustomDp $email $nbSettings" > + pack $nbSettings.fNick.fDispl.dp -side left -expand true -fill > y > -pady 5 -padx 8 > + pack $nbSettings.fNick.fDispl.bset -side left -padx 3 -pady 2 > + pack $nbSettings.fNick.fDispl.brem -side left -padx 3 -pady 2 > + > grid $nbSettings.fNick.customnickl -row 0 -column 0 -sticky e > grid $nbSettings.fNick.customnick -row 0 -column 1 -sticky we > grid $nbSettings.fNick.customfnickl -row 1 -column 0 -sticky e > @@ -1342,6 +1355,8 @@ > grid $nbSettings.fNick.ycustomfnick -row 2 -column 1 -sticky we > grid $nbSettings.fNick.lColor -row 3 -column 0 -sticky e > grid $nbSettings.fNick.fColor -row 3 -column 1 -sticky w > + grid $nbSettings.fNick.lDispl -row 4 -column 0 -sticky e > + grid $nbSettings.fNick.fDispl -row 4 -column 1 -sticky w > grid columnconfigure $nbSettings.fNick 1 -weight 1 > > labelframe $nbSettings.fChat -relief groove -text [trans chat] > @@ -1556,6 +1571,23 @@ > $w.fNick.fColor.col configure -background [$w.fNick.fColor cget > - > background] -highlightthickness 0 > } > > + # These procedures change the custom DP. They need to be launched > from within the properties screen, > + # as the actual change is done through the PropOk procedure > + proc ChangeCustomDp { email w } { > + global customdp_$email > + dpBrowser $email > + tkwait window .dpbrowser > + set customdp_img_$email [image create photo [TmpImgName] -file > [set customdp_$email]] > + $w.fNick.fDispl.dp configure -image [set customdp_img_$email] - > borderwidth 0 -relief flat > + > + } > + > + proc RemoveCustomDp { email w } { > + global customdp_$email > + set customdp_$email "" > + $w.fNick.fDispl.dp configure -image [set customdp_$email] - > borderwidth 0 -relief flat > + } > + > proc SetGlobalNick { } { > > if {[winfo exists .globalnick]} { > @@ -1604,7 +1636,7 @@ > } > > proc PropOk { email w } { > - global colorval_$email showcustomsmileys_$email ignorecontact_ > $email > + global colorval_$email customdp_$email showcustomsmileys_$email > > ignorecontact_$email > > if {[::alarms::SaveAlarm $email] != 0 } { > return > @@ -1612,11 +1644,20 @@ > > set nbSettings [$w.nb getframe usersettings] > set nbSettings [$nbSettings.sw.sf getframe] > + > + # Backup old custom dp > + set old_customdp [::abook::getContactData $email customdp ""] > > # Store custom display information options > - ::abook::setAtomicContactData $email [list customnick > customfnick cust_p4c_name customcolor showcustomsmileys ignored] \ > - [list [$nbSettings.fNick.customnick.ent get] > [$nbSettings.fNick.customfnick.ent get] > [$nbSettings.fNick.ycustomfnick.ent get] [set colorval_$email] [set > showcustomsmileys_$email] [set ignorecontact_$email]] > - > + ::abook::setAtomicContactData $email [list customnick > customfnick cust_p4c_name customcolor customdp showcustomsmileys > ignored] \ > + [list [$nbSettings.fNick.customnick.ent get] > [$nbSettings.fNick.customfnick.ent get] > [$nbSettings.fNick.ycustomfnick.ent get] [set colorval_$email] [set > customdp_$email] [set showcustomsmileys_$email] [set ignorecontact_ > $email]] > + > + # Update display picture > + if {[set customdp_$email] != $old_customdp} { > + ::skin::getDisplayPicture $email 1 > + ::skin::getLittleDisplayPicture $email 1 > + } > + > # Store groups > ::groups::GroupmanagerOk $email > > ---------------------------------------------------------------------- > --- > 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 > Amsn-devel@lists.sourceforge.net > 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 Amsn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/amsn-devel