Hi,
I'll look at this later, when I get time. Thanks for sending the patches.
About the resize to original, it's there for a reason, you sometimes need to 
resize to 'original', also 
'original' means by definition, that it would need to fetch it again. 
Think about this.. a user has his DP's original size set to 150x150.. you do a 
set to original, with 
your patch, it gets resized to 96x96, which is wrong..
Also, I sometimes use the 'original' when I want it to redownload.. try for 
example setting to huge, 
then small, then huge, then small, then 'normal'.. what do you see ? very very 
bad image quality, which 
is why you do 'original', to get back that image quality you lost...
About the resize thing, it's a good thing it's getting done, I always knew 
about the bug, but never 
did.. but the 200ms workaround is not really a good idea.. I *think* that what 
I do is to set a 
callback on Configure and then do a [winfo width] or something.. which is why 
it does that, because the 
width/height are not yet updated.. I think the best solution is to use the %W 
and %H of the bind 
command. Read the bind manual to see the options and see if we can get the new 
width and height with 
the % modifier.. this way, no need to have a 200ms gap, + should work on 
maximimze.

KaKaRoTo

On Thu, Sep 06, 2007 at 08:32:49AM +0000, square87 wrote:
> Hi
> 
> chatwindow.tcl
> 
> @@ -533,26 +541,17 @@ U @@ -3693,6 +3702,10 @@
> So... if lesstab and moretab pics are shown and if i maximize chatwindows i
> still see them, but delaying "::ChatWindow::CheckForTooManyTabs $window 0"
> about 200ms resolve the problem. But the bug is still reproducible in this
> way:
> 1) Open a chatwindow and maximize it
> 2) Disable: "Save chat window size as default when resizing it"
> 3) Open 3 tabs
> 4) Resize chatwindow until only two tabs are showed: now lesstab and moretab
> should appear
> 5) Maximize chatwindow: the widget where there are tabs are not updated and
> lesstab and moretab are still shown
> 
> @@ -3012,21 +3011,31 @@
> A solution for http://www.amsn-project.net/forums/viewtopic.php?t=3471
> After 8 users in a multichat only 7 users are shown and then there is a msg
> "There are X others users. To see all users go in: Contact -> Propierities.
> ", that should go in langen.
> 
> @@ -2329,16 +2329,20 @@
> I put also scrollbar-x because i cannot see longs strings ( long nick +
> status + userlogin). I can always maximize the window, but...
> What do you think about to order nicks in alphabetical order? :P
> 
> skins.tcl and msnp2p.tcl
> About: http://www.amsn-project.net/forums/viewtopic.php?t=3972&highlight=
> I found this solution...it checks the previous size of dp in chatwindow and
> it reloads with the previous size. Then in protocol.tcl, i added a new value
> when we call the proc ::MSNP2P::loadUserPic to load a new dp it this way
> getDisplayPicture knows that it have to set a new dp with a new size and no
> with last size.
> 
> When we set a dp in a chatwindow with another size (huge, for example) and
> then we want to set it with the original size we have:
> if [::config::getKey autoresizedp] is enabled we download again the DP and
> we see it in default size, else if the opt is disabled we cannot see it in
> original size.
> How to reproduce:
> 1) Disable: Automatically resize display pictures to default size
> 2) Open a chatwindow, show the user's avatar as huge
> 3) set the user's avatar as "original" -> nothing happen
> But when we want re-set a DP in original size, we don't need to download it
> again just resize for this i put in getDisplayPicture:
>         if {$opz == 2} { ;# opz is 2 when ::MSNP2P::loadUserPic is called
> when reload as 1
>             if {[::config::getKey autoresizedp]} {
>                 ::picture::Resize $picName 96 96
>             }
>             return $picName
>         }
> So when we want to re-set a dp we have now that:
> we can set dp in original size when autoresizedp is 0, while when
> autoresizedp is 1 we don't download again dp to show it in default size.
> 
> Sorry for my English
> Bye

> Index: chatwindow.tcl
> ===================================================================
> --- chatwindow.tcl    (revision 8995)
> +++ chatwindow.tcl    (working copy)
> @@ -533,26 +541,17 @@
>                       after 200 [list ::ChatWindow::TopUpdate $chatid]
>               }
>  
> -             set geometry [wm geometry $window]
> -             set pos_start [string first "+" $geometry]
> -             #Look if the window changed size with the configure
> -
> -             if {[::config::getKey wincontainersize] != "[string range 
> $geometry 0 [expr {$pos_start-1}]]"} {
> -                     set sizechanged 1
> -             } else {
> -                     set sizechanged 0
> -             }
> -
>               #Save size of current container
>               if { [::config::getKey savechatwinsize] } {
> +                     set geometry [wm geometry $window]
> +                     set pos_start [string first "+" $geometry]
>                       ::config::setKey wincontainersize  [string range 
> $geometry 0 [expr {$pos_start-1}]]
>               }
>       
> -             #If the window changed size use checkfortoomanytabs
> -             if { [winfo exists ${window}.bar] && $sizechanged} {
> -                     CheckForTooManyTabs $window 0
> +             if { [winfo exists ${window}.bar]} {
> +                     after cancel [list ::ChatWindow::CheckForTooManyTabs 
> $window 0]
> +                     after 200 [list ::ChatWindow::CheckForTooManyTabs 
> $window 0]
>               }
> -
>       }
>  
>       
> #///////////////////////////////////////////////////////////////////////////////
> @@ -3012,21 +3011,31 @@
>  
>               set camicon [::skin::loadPixmap camicon]
>  
> +             set count_users 0
>               foreach user_login $user_list {
> +                     incr count_users
> +                     if {$count_users > 7} {
> +                             set len [expr [llength $user_list] - 
> $count_users + 1]
> +                             if {$len != 1} {
> +                                     set warningtext "There are $len others 
> users. To see all users go in: Contact -> Propierities. "
> +                                     $top insert text end $warningtext
> +                                     break
> +                             }
> +                     }
>  
>                       set shares_cam [::abook::getContactData $user_login 
> webcam_shared]
>                       
>                       if { [::config::getKey emailsincontactlist] == 1 } {
>                               set user_name ""
>                       } else {
>                               set user_name [string map {"\n" " "} 
> [::abook::getDisplayNick $user_login]]
>                       }
>                       set state_code [::abook::getVolatileData $user_login 
> state]
>  
> -                     set psmmedia [::abook::getpsmmedia $user_login]
> -
>                       if { [::config::getKey psmplace] == 0 } {
>                               set psmmedia ""
> +                     } else {
> +                             set psmmedia [::abook::getpsmmedia $user_login]
>                       }
>  
>                       #Space added so it doesn't stick next to the status
> @@ -3693,6 +3702,10 @@
>               variable containerwindows
>               variable visibletabs
>               variable win2tab
> +
> +             if {![winfo exists ${container}.bar]} {
> +                     return
> +             }
>               set bar_w [winfo width ${container}.bar]
>               set tab_w [image width [::skin::loadPixmap tab]]
>  
> Index: msnp2p.tcl
> ===================================================================
> --- msnp2p.tcl        (revision 8995)
> +++ msnp2p.tcl        (working copy)
> @@ -130,8 +130,9 @@
>  
>  
>       #Get picture from $user, if cached, or sets image as "loading", and 
> request it
>       #using MSNP2P
> -     proc loadUserPic { chatid user {reload "0"} } {
> +     #If $new == 1 it means that an users has changed his picture
> +     proc loadUserPic { chatid user {reload 0} {new 0}} {
>               global HOME
>  
>               #Line below changed from != -1 to == 0 because -1 means 
> @@ -155,11 +156,11 @@
>                       return
>               }
>  
> -             #Reload 1 means that we force aMSN to reload a new display pic
> +             #Reload 1 means that we force aMSN to reload the display pic 
> with default or original size
>               #Destroy it before to avoid TkCxImage to redraw animated gif 
> above the good display pic
>               #TODO: FIX: I think the next line is incorrect, did you want 
> image delete? (be careful if there are images on the screen)
>               destroy user_pic_$user
> -             if { ![file readable "[file join $HOME displaypic cache 
> ${filename}].png"] || $reload == "1" } {
> +             if { ![file readable "[file join $HOME displaypic cache 
> ${filename}].png"]} {
>                       status_log "::MSNP2P::GetUser: FILE [file join $HOME 
> displaypic cache ${filename}] doesn't exist!!\n" white
>                       image create photo user_pic_$user -file 
> [::skin::GetSkinFile "displaypic" "loading.gif"] -format cximage
>  
> @@ -179,14 +180,16 @@
>                               } else {
>                                       image delete displaypicture_not_$user
>                               }
> -                     }                               
> -                     
> +                     }
>  
>                       create_dir [file join $HOME displaypic]
>                       create_dir [file join $HOME displaypic cache]
>                       ::MSNP2P::RequestObject $chatid $user $msnobj
> +             } elseif { $reload == 1} {
> +                     ::skin::getDisplayPicture $user 1 2
> +                     ::amsn::UpdateAllPictures
>               } else {
> -                     ::skin::getDisplayPicture $user 1
> +                     ::skin::getDisplayPicture $user 1 $new
>               }
>       }
>  
> Index: protocol.tcl
> ===================================================================
> --- protocol.tcl      (revision 8995)
> +++ protocol.tcl      (working copy)
> @@ -5059,17 +5059,17 @@
>                               set users_in_chat [$sb cget -users]
>                               if { [lsearch $users_in_chat $user] != -1 } {
>                                       status_log "User changed image while 
> image in use!! Updating!!\n" white
> -                                     ::MSNP2P::loadUserPic [::MSN::ChatFor 
> $sb] $user
> +                                     ::MSNP2P::loadUserPic [::MSN::ChatFor 
> $sb] $user 0 1
>                               }
>                       }
>               } else {
>                       if { [::MSN::myStatusIs] != "FLN" && 
> [::MSN::myStatusIs] != "HDN"} {
>                               if { ![file readable "[file join $HOME 
> displaypic cache ${newPic}].png"] } {
>                                       set chat_id [::MSN::chatTo $user]
> -                                     ::MSN::ChatQueue $chat_id [list 
> ::MSNP2P::loadUserPic $chat_id $user]
> +                                     ::MSN::ChatQueue $chat_id [list 
> ::MSNP2P::loadUserPic $chat_id $user 0 1]
>                               } else {
>                                       #We already have the image so don't 
> open a convo to get it just load it
> -                                     ::MSNP2P::loadUserPic "" $user
> +                                     ::MSNP2P::loadUserPic "" $user 0 1
>                               }
>                       }
>               }
> Index: gui.tcl
> ===================================================================
> --- gui.tcl   (revision 8995)
> +++ gui.tcl   (working copy)
> @@ -2329,16 +2329,20 @@
>               frame $wname.blueframe.list -class Amsn -borderwidth 0
>               frame $wname.buttons -class Amsn
>  
> -             listbox $wname.blueframe.list.items -yscrollcommand 
> "$wname.blueframe.list.ys set" -font splainf \
> +             listbox $wname.blueframe.list.items -yscrollcommand 
> "$wname.blueframe.list.ys set" -xscrollcommand "$wname.blueframe.list.xs set" 
> -font splainf \
>                       -background white -relief flat -highlightthickness 0 
> -height 20 -width 60
>               scrollbar $wname.blueframe.list.ys -command 
> "$wname.blueframe.list.items yview" -highlightthickness 0 \
>                       -borderwidth 1 -elementborderwidth 1
>  
> +             scrollbar $wname.blueframe.list.xs -orient horizontal -command 
> "$wname.blueframe.list.items xview" -highlightthickness 0 \
> +                     -borderwidth 1 -elementborderwidth 1
> +
>               button  $wname.buttons.ok -text "[trans ok]" -command [list 
> ::amsn::listChooseOk $wname $itemlist $command]
>               button  $wname.buttons.cancel -text "[trans cancel]" -command 
> [list destroy $wname]
>  
>  
>               pack $wname.blueframe.list.ys -side right -fill y
> +             pack $wname.blueframe.list.xs -side bottom -fill x
>               pack $wname.blueframe.list.items -side left -expand true -fill 
> both
>               pack $wname.blueframe.list -side top -expand true -fill both 
> -padx 4 -pady 4
>               pack $wname.blueframe -side top -expand true -fill both
> @@ -2356,7 +2360,7 @@
>               pack $wname.buttons -side bottom -fill x -pady 3
>  
>               foreach item $itemlist {
> -                     $wname.blueframe.list.items insert end [lindex $item 0]
> +                     $wname.blueframe.list.items insert end "[lindex $item 
> 0] - ([lindex $item 1])"
>               }
>  
>  
> Index: skins.tcl
> ===================================================================
> --- skins.tcl (revision 8995)
> +++ skins.tcl (working copy)
> @@ -234,7 +234,9 @@
>               return displaypicture_std_none
>       }
>  
> -     proc getDisplayPicture { email {force 0}} {
> +     # $opz == 1 the user has changed his pics
> +     # $opz == 2 we want to show the pic in the original or default size
> +     proc getDisplayPicture { email {force 0} {opz 0}} {
>               global HOME
>                               
>               set picName displaypicture_std_$email
> @@ -242,10 +244,15 @@
>               if { [::abook::getContactData $email client] == "Webmessenger" 
> } { 
>                       return [::skin::loadPixmap webmsn_dp]
>               }
>               if {[catch {image width $picName}] == 0  && $force == 0} {
>                       return $picName
>               }
> 
> +             if { [catch {image width $picName} personalsize] } {
> +                     set personalsize -1
> +             }
> +
>               if { [::abook::getContactData $email customdp] != "" } {
>                       set filename [::abook::getContactData $email customdp 
> ""]
>                       # As custom DP can also be stored outside the cache 
> folder,
> @@ -267,16 +274,26 @@
>               }
>               
>               if {[catch {image width $picName} res]} {
>                       #status_log "Error while loading $picName: $res"
>                       image create photo $picName
>                       $picName copy [::skin::getNoDisplayPicture]
>                       set file [::skin::GetSkinFile displaypic nopic.gif]
>               }
>               
> +             if {$opz == 2} {
> +                     if {[::config::getKey autoresizedp]} {
> +                             ::picture::Resize $picName 96 96
> +                     }
> +                     return $picName
> +             }
> 
>               if { [catch {::picture::GetPictureSize $file} cursize] } {
>                       #Corrupted image.. might as well delete it and 
> redownload it some other time..
>                       status_log "Error opening $file: $cursize\n"
>                       catch {file delete $file}
> +             } elseif {![::config::getKey autoresizedp] && $opz == 0 && 
> $personalsize != -1} {
> +                     ::picture::Resize $picName $personalsize $personalsize
>               } elseif { [::config::getKey autoresizedp] && 
> ![::picture::IsAnimated $file] && $cursize != "96x96"} {
>                       ::picture::Resize $picName 96 96
>               }
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems?  Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >>  http://get.splunk.com/
> _______________________________________________
> Amsn-devel mailing list
> Amsn-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/amsn-devel


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Amsn-devel mailing list
Amsn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/amsn-devel

Reply via email to