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

Reply via email to