From: <tom...@us...> - 2006-08-29 20:49:53
|
Revision: 7191 Author: tomhennigan Date: 2006-08-29 13:49:36 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/amsn/?rev=7191&view=rev Log Message: ----------- Fixing a bad commit, sorry! Modified Paths: -------------- branches/0_96/amsn/gui.tcl Modified: branches/0_96/amsn/gui.tcl =================================================================== --- branches/0_96/amsn/gui.tcl 2006-08-29 20:41:56 UTC (rev 7190) +++ branches/0_96/amsn/gui.tcl 2006-08-29 20:49:36 UTC (rev 7191) @@ -1,10 +1,11 @@ if {![::picture::Loaded]} { - if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} { - tk_messageBox -default ok -message "There's a problem loading a module of aMSN (TkCxImage) on this computer. \ - You need to update your system to Mac OS 10.3.9" -icon warning + if { [OnDarwin] } { + tk_messageBox -default ok -message "There's a problem loading a module of aMSN (TkCxImage) on this \ + computer. You need to update your system to Mac OS 10.3.9" -icon warning } else { - tk_messageBox -default ok -message "You can't load TkCximage, this is now needed to run \ - aMSN. Please compile amsn first, instructions on how to compile are located in the file INSTALL" -icon warning + tk_messageBox -default ok -message "Loading TkCximage failed. TkCxImage this is needed to run \ + aMSN. Please compile aMSN first, instructions on how to compile are located in the file INSTALL" \ + -icon warning } exit } @@ -18,7 +19,7 @@ proc shape { args } {} } #package require pixmapbutton -if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} { +if { [OnMac] } { #Use tclCarbonHICommand for window utilities catch {package require tclCarbonHICommand} catch {package require QuickTimeTcl} @@ -28,9 +29,7 @@ #package require pixmapmenu } - if { $initialize_amsn == 1 } { - ::skin::setKey mainwindowbg #7979f2 ::skin::setKey contactlistbg #ffffff ::skin::setKey topcontactlistbg #ffffff @@ -169,7 +168,7 @@ ::skin::setKey notify_font sboldf ::skin::setKey notify_dp_border 0 - if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} { + if { [OnMac] } { ::skin::setKey balloonbackground #ffffca ::skin::setKey menubackground #ECECEC } else { @@ -182,7 +181,7 @@ #Virtual events used by Button-click #On Mac OS X, Control emulate the "right click button" #On Mac OS X, there's a mistake between button2 and button3 - if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} { + if { [OnMac] } { event add <<Button1>> <Button1-ButtonRelease> event add <<Button2>> <Button3-ButtonRelease> event add <<Button2-Press>> <ButtonPress-3> @@ -212,19 +211,16 @@ #Set the default option for canvas -highlightthickness option add *Canvas.highlightThickness 0 - #OnUnix is defined later on so for 0.96 just use this, trunk has OnUnix here - if { ![catch {tk windowingsystem} wsystem] && $wsystem == "x11" } { + if { [OnLinux] } { #Mappings for Shift-BackSpace bind Entry <Terminate_Server> [bind Entry <BackSpace>] bind Text <Terminate_Server> [bind Text <BackSpace>] } - if { $::tcl_version >= 8.4 } { - #To avoid a bug inside panedwindow, by Youness - rename ::tk::panedwindow::Cursor ::tk::panedwindow::Original_Cursor - proc ::tk::panedwindow::Cursor { args } { - catch { eval ::tk::panedwindow::Original_Cursor $args } - } + #To avoid a bug inside panedwindow, by Youness + rename ::tk::panedwindow::Cursor ::tk::panedwindow::Original_Cursor + proc ::tk::panedwindow::Cursor { args } { + catch { eval ::tk::panedwindow::Original_Cursor $args } } } @@ -239,7 +235,6 @@ ##PUBLIC proc initLook { family size bgcolor} { - global tcl_platform font create menufont -family $family -size $size -weight normal font create sboldf -family $family -size $size -weight bold font create splainf -family $family -size $size -weight normal @@ -328,13 +323,13 @@ } option add *Font splainf userDefault #Use different width for scrollbar on Mac OS X - if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} { + if { [OnMac] } { option add *background #ECECEC option add *highlightbackground #ECECEC option add *Scrollbar.width 15 userDefault option add *Button.Font macfont userDefault option add *Button.highlightBackground #ECECEC userDefault - } elseif { $tcl_platform(platform) == "windows"} { + } elseif { [OnWin] } { option add *background [::skin::getKey menubackground] option add *Scrollbar.width 14 userDefault option add *Button.Font sboldf userDefault @@ -365,7 +360,7 @@ #/////////////////////////////////////////////////////////////////////////////// # Draws the about window proc aboutWindow {} { - global tcl_platform langenc date weburl + global langenc date weburl set filename "[file join docs README[::config::getGlobalKey language]]" @@ -570,14 +565,13 @@ #/////////////////////////////////////////////////////////////////////////////// proc messageBox { message type icon {title ""} {parent ""}} { - #If we are on MacOS X, don't put the box in the parent because there are some problems - if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} { + if { [OnMac] } { set answer [tk_messageBox -message "$message" -type $type -icon $icon] } else { if { $parent == ""} { set parent [focus] - if { $parent == ""} { set parent "."} + if { $parent == "" } { set parent "." } } set answer [tk_messageBox -message "$message" -type $type -icon $icon -title $title -parent $parent] } @@ -707,8 +701,6 @@ } proc InkSend { win_name filename {friendlyname ""}} { - - set chatid [::ChatWindow::Name $win_name] if { $chatid == 0 } { @@ -740,22 +732,17 @@ set evPar(win_name) win_name ::plugins::PostEvent chat_ink_send evPar - - #Draw our own message #Does this image ever gets destroyed ? When destroying the chatwindow it's embeddeed in it should I guess ? This is not the leak I'm searching for though as I'm not sending inks... set img [image create photo [TmpImgName] -file $filename] SendMessageFIFO [list ::amsn::ShowInk $chatid [::abook::getPersonal login] $nick $img ink $p4c] "::amsn::messages_stack($chatid)" "::amsn::messages_flushing($chatid)" ::MSN::ChatQueue $chatid [list ::MSN::SendInk $chatid $filename] - ::plugins::PostEvent chat_ink_sent evPar - } proc FileTransferSend { win_name {filename ""} } { - if {![winfo exists $win_name] } { set win_name [::amsn::chatUser $win_name] } @@ -778,18 +765,6 @@ return } - - #if {[::config::getKey autoftip] == 0 } { - # ::config::setKey myip [ $w.top.fields.ip get ] - # set ipaddr [ $w.top.fields.ip get ] - # destroy $w - #} else { - # set ipaddr [ $w.top.fields.ip get ] - # destroy $w - # if { $ipaddr != [::config::getKey myip] } { - # set ipaddr [ ::abook::getDemographicField clientip ] - # } - #} if { [::config::getKey autoftip] } { set ipaddr [::config::getKey myip] } else { @@ -803,7 +778,7 @@ } set chatid [::ChatWindow::Name $win_name] - status_log "chatid:=$chatid" red + status_log "chatid:=$chatid" red set users [::MSN::usersInChat $chatid] @@ -841,7 +816,6 @@ } proc CancelFTInvitation { chatid cookie } { - #::MSNFT::acceptFT $chatid $cookie set win_name [::ChatWindow::For $chatid] @@ -865,7 +839,6 @@ set email [::MSN::usersInChat $chatid] ::log::ftlog $email $txt - } proc WinWriteCancelFT {chatid txt} { @@ -946,7 +919,6 @@ WinWrite $chatid ")\n" green WinWriteIcon $chatid greyline 3 - ::log::ftlog $dest $txt if { ![file writable [::config::getKey receiveddir]]} { @@ -972,7 +944,6 @@ set win_name [::ChatWindow::MakeFor $chatid $txt $fromlogin] - WinWrite $chatid "\n" green WinWriteIcon $chatid greyline 3 WinWrite $chatid "\n" green @@ -1004,19 +975,16 @@ } proc AcceptFTOpenSB { chatid cookie {varlist ""} } { - - #::amsn::RecvWin $cookie - if { $cookie != -1 } { - ::MSNFT::acceptFT $chatid $cookie - } else { - ::MSN6FT::AcceptFT $chatid [lindex $varlist 0] [lindex $varlist 1] [lindex $varlist 2] [lindex $varlist 3] [lindex $varlist 4] [lindex $varlist 5] - set cookie [lindex $varlist 4] - } - + #::amsn::RecvWin $cookie + if { $cookie != -1 } { + ::MSNFT::acceptFT $chatid $cookie + } else { + ::MSN6FT::AcceptFT $chatid [lindex $varlist 0] [lindex $varlist 1] [lindex $varlist 2] [lindex $varlist 3] [lindex $varlist 4] [lindex $varlist 5] + set cookie [lindex $varlist 4] + } } proc AcceptFT { chatid cookie {varlist ""} } { - foreach var $varlist { status_log "Var: $var\n" red } @@ -1060,7 +1028,6 @@ set email [::MSN::usersInChat $chatid] ::log::ftlog $email $txt - } proc WinWriteAcceptFT {chatid txt} { @@ -1091,7 +1058,6 @@ proc RejectFT {chatid cookie {varlist ""} } { - if { $cookie != -1 && $cookie != -2 } { ::MSNFT::rejectFT $chatid $cookie } elseif { $cookie == - 1 } { @@ -1135,7 +1101,6 @@ set email [::MSN::usersInChat $chatid] ::log::ftlog $email $txt - } proc WinWriteRejectFT {chatid txt} { @@ -1204,7 +1169,6 @@ wm protocol $w WM_DELETE_WINDOW $cancelcmd moveinscreen $w 30 - ::dkfprogress::SetProgress $w.prbar 0 } @@ -1223,13 +1187,11 @@ # fr=finish receiving # fs=finish sending # cookie: ID for the filetransfer - # bytes: bytes sent/received (-1 if cancelling) + # bytes: bytes sent/received ( > filesize if finished / -1 if cancelling ) # filesize: total bytes in the file - # chatid used for MSNP9 through server transfers + # chatid: used for through server transfers ##### proc FTProgress {mode cookie filename {bytes 0} {filesize 1000} {chatid 0}} { - # -1 in bytes to transfer cancelled - # bytes >= filesize for connection finished variable firsttimes ;# Array. Times in ms when the FT started. variable ratetimer @@ -1293,7 +1255,6 @@ set difftime [expr {[clock seconds] - $firsttimes($cookie)}] } - if { $difftime == 0 || $bytes == 0} { set rate "???" set timeleft "-" @@ -1465,23 +1426,15 @@ set win_name [::ChatWindow::MakeFor $chatid $tmsg $user] - if { $remote_auth == 1 } { if { "$user" != "$chatid" } { - write_remote "To $chatid : $msg" msgsent - } else { - write_remote "From $chatid : $msg" msgrcv } } PutMessage $chatid $user $nick $msg $type [list $fontfamily $style $fontcolor] $p4c - -# set evPar [list $user [::abook::getDisplayNick $user] $msg] - - } #/////////////////////////////////////////////////////////////////////////////// @@ -1510,23 +1463,14 @@ set maxw [expr {[::skin::getKey notifwidth]-20}] incr maxw [expr {0-[font measure splainf "[trans says [list]]:"]}] set nickt [trunc $nick $maxw splainf] - set tmsg "[trans gotink $user]" - set win_name [::ChatWindow::MakeFor $chatid $tmsg $user] PutMessageWrapped $chatid $user $nickt "" $type "" $p4c set scrolling [::ChatWindow::getScrolling [::ChatWindow::GetOutText ${win_name}]] - - - [::ChatWindow::GetOutText ${win_name}] image create end -image $image - if { $scrolling } { ::ChatWindow::Scroll [::ChatWindow::GetOutText ${win_name}] } - - - } #/////////////////////////////////////////////////////////////////////////////// @@ -1535,7 +1479,6 @@ # enterCustomStyle () # Dialog window to edit the custom chat style proc enterCustomStyle {} { - set w .change_custom_style if {[winfo exists $w]} { raise $w @@ -1562,7 +1505,6 @@ button $w.fb.ok -text [trans ok] -command [list ::amsn::enterCustomStyleOk $w] button $w.fb.cancel -text [trans cancel] -command "destroy $w" - pack $w.fn.label $w.fn.ent $w.fn.help -side left -fill x -expand true pack $w.fb.ok $w.fb.cancel -side right -padx 5 @@ -1591,8 +1533,6 @@ # - 'chatid' is the chat name # - 'usr_name' is the user that joins email proc userJoins { chatid usr_name {create_win 1} } { - - set win_name [::ChatWindow::For $chatid] if { $create_win && $win_name == 0 && [::config::getKey newchatwinstate]!=2 } { @@ -1630,7 +1570,6 @@ set evPar(chatid) chatid set evPar(win_name) win_name ::plugins::PostEvent user_joins_chat evPar - } proc WinWriteJoin {chatid usr_name} { @@ -1649,7 +1588,6 @@ # - 'chatid' is the chat name # - 'usr_name' is the user email to show in the status message proc userLeaves { chatid usr_name closed } { - global automsgsent set win_name [::ChatWindow::For $chatid] @@ -1701,7 +1639,6 @@ set evPar(chatid) chatid set evPar(win_name) win_name ::plugins::PostEvent user_leaves_chat evPar - } proc WinWriteLeave {chatid username} { @@ -1720,8 +1657,6 @@ # a message in the status bar. # - 'chatid' is the name of the chat proc updateTypers { chatid } { - - if {[::ChatWindow::For $chatid] == 0} { return 0 } @@ -1741,26 +1676,19 @@ set icon "" if {[llength $typers_list] == 0} { - set lasttime [::MSN::lastMessageTime $chatid] if { $lasttime != 0 } { set statusmsg "[trans lastmsgtime $lasttime]" } - } elseif {[llength $typers_list] == 1} { - set statusmsg " [trans istyping $typingusers]." set icon typingimg - } else { - set statusmsg " [trans aretyping $typingusers]." set icon typingimg - } ::ChatWindow::Status [::ChatWindow::For $chatid] $statusmsg $icon - } #/////////////////////////////////////////////////////////////////////////////// @@ -1784,8 +1712,7 @@ $win.picmenu delete 0 end #Make the picture menu appear on the conversation window instead of having it in the bottom of screen (and sometime lost it if the conversation window is in the bottom of the window) - global tcl_platform - if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} { + if { [OnMac] } { incr x -50 incr y -115 } @@ -1852,13 +1779,9 @@ } if { $scrolling } { - update idletasks - ::ChatWindow::Scroll [::ChatWindow::GetOutText $win] } - - } proc HidePicture { win } { @@ -1910,7 +1833,6 @@ proc ShowAddList {title win_name command} { - set userlist [list] set chatusers [::MSN::usersInChat [::ChatWindow::Name $win_name]] @@ -1956,14 +1878,12 @@ if { [llength $userlist] > 0 } { ::amsn::listChoose $title $userlist "::amsn::queueinviteUser [::ChatWindow::Name $win_name]" 1 0 - } else { cmsn_draw_otherwindow $title "::amsn::queueinviteUser [::ChatWindow::Name $win_name]" } } proc ShowInviteMenu { win_name x y } { - set menulength 0 set chatid [::ChatWindow::Name $win_name] set chatusers [::MSN::usersInChat $chatid] @@ -2008,7 +1928,6 @@ } proc ShowChatList {title win_name command} { - set userlist [list] set chatusers [::MSN::usersInChat [::ChatWindow::Name $win_name]] if { [llength $chatusers] == 0 } { @@ -2028,14 +1947,12 @@ } else { lappend userlist [list [::abook::getDisplayNick $user_login] $user_login] } - } if { [llength $userlist] > 0 } { - status_log "Here\n" ::amsn::listChoose $title $userlist $command 0 1 } else { - status_log "No users\n" + status_log "ShowChatList: No users\n" } } @@ -2046,7 +1963,7 @@ #itemlist: Array,or list, with two columns and N rows. Column 0 is the one to be #shown in the list. Column 1 is the use used to parameter to the command proc listChoose {title itemlist command {other 0} {skip 1}} { - global userchoose_req tcl_platform + global userchoose_req set itemcount [llength $itemlist] #If just 1 user, and $skip flag set to one, just run command on that user @@ -2068,12 +1985,11 @@ } else { set wname $res } - + wm title $wname $title -# wm geometry $wname 320x350 #No ugly blue frame on Mac OS X, system already use a border around window - if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} { + if { [OnMac] } { frame $wname.blueframe -background [::skin::getKey topcontactlistbg] } else { frame $wname.blueframe -background [::skin::getKey mainwindowbg] @@ -2217,7 +2133,6 @@ } else { CharsTyped $chatid $newlength } - } #/////////////////////////////////////////////////////////////////////////////// @@ -2290,12 +2205,10 @@ # just queue the message to send in the chat associated with 'win_name', and set # a timeout for the message proc MessageSend { win_name input {custom_msg ""} {friendlyname ""}} { - - set chatid [::ChatWindow::Name $win_name] if { $chatid == 0 } { - status_log "VERY BAD ERROR in ::amsn::MessageSend!!!\n" red + status_log "::amsn::MessageSend: TOO BAD!!! Got no chatid!\n" red return 0 } @@ -2320,7 +2233,6 @@ set fontstyle [lindex [::config::getKey mychatfont] 1] set fontcolor [lindex [::config::getKey mychatfont] 2] - if { $friendlyname != "" } { set nick $friendlyname set p4c 1 @@ -2335,6 +2247,7 @@ set nick [::abook::getPersonal MFN] set p4c 0 } + #Postevent when we send a message set evPar(nick) nick set evPar(msg) msg @@ -2358,56 +2271,47 @@ incr first 400 } - set msgchunk [string range $msg $first end] - - if {[::MSNMobile::IsMobile $chatid] == 0 } { + set msgchunk [string range $msg $first end] + + if {[::MSNMobile::IsMobile $chatid] == 0 } { set ackid [after 60000 ::amsn::DeliveryFailed $chatid [list $msgchunk]] - } else { + } else { set ackid 0 - } - - set message [Message create %AUTO%] - $message setBody $msg - #TODO: where is the best place to put this code? - - set color "000000$fontcolor" - set color "[string range $color end-1 end][string range $color end-3 end-2][string range $color end-5 end-4]" - - set style "" - - if { [string first "bold" $fontstyle] >= 0 } { - set style "${style}B" - } - if { [string first "italic" $fontstyle] >= 0 } { - set style "${style}I" - } - if { [string first "overstrike" $fontstyle] >= 0 } { - set style "${style}S" - } - if { [string first "underline" $fontstyle] >= 0 } { - set style "${style}U" - } - - set format "" - set format "{$format}FN=[urlencode $fontfamily]; " - set format "{$format}EF=$style; " - set format "{$format}CO=$color; " - set format "{$format}CS=0; " - set format "{$format}PF=22" - $message setHeader [list X-MMS-IM-Format "$format"] - - #Draw our own message - messageFrom $chatid [::abook::getPersonal login] $nick $message user $p4c - #as this object isn't used anymore, destroy it - $message destroy - ::MSN::messageTo $chatid "$msgchunk" $ackid $friendlyname - - - CharsTyped $chatid "" - - ::plugins::PostEvent chat_msg_sent evPar + } + + set message [Message create %AUTO%] + $message setBody $msg + #TODO: where is the best place to put this code? + + set color "000000$fontcolor" + set color "[string range $color end-1 end][string range $color end-3 end-2][string range $color end-5 end-4]" + + set style "" + + if { [string first "bold" $fontstyle] >= 0 } { set style "${style}B" } + if { [string first "italic" $fontstyle] >= 0 } { set style "${style}I" } + if { [string first "overstrike" $fontstyle] >= 0 } { set style "${style}S" } + if { [string first "underline" $fontstyle] >= 0 } { set style "${style}U" } + + set format "" + set format "{$format}FN=[urlencode $fontfamily]; " + set format "{$format}EF=$style; " + set format "{$format}CO=$color; " + set format "{$format}CS=0; " + set format "{$format}PF=22" + $message setHeader [list X-MMS-IM-Format "$format"] + + #Draw our own message + messageFrom $chatid [::abook::getPersonal login] $nick $message user $p4c + + #This object isn't used anymore: destroy it + $message destroy + ::MSN::messageTo $chatid "$msgchunk" $ackid $friendlyname + + CharsTyped $chatid "" + + ::plugins::PostEvent chat_msg_sent evPar } - } #/////////////////////////////////////////////////////////////////////////////// @@ -2473,21 +2377,17 @@ # was created, or just "user" to use the fontformat parameter # - 'fontformat' is a list containing font style and color proc PutMessage { chatid user nick msg type fontformat {p4c ""}} { - #Run it in mutual exclusion SendMessageFIFO [list ::amsn::PutMessageWrapped $chatid $user $nick $msg $type $fontformat $p4c] "::amsn::messages_stack($chatid)" "::amsn::messages_flushing($chatid)" - } proc PutMessageWrapped { chatid user nick msg type fontformat {p4c 0 }} { - if { [::config::getKey showtimestamps] } { set tstamp [timestamp] } else { set tstamp "" } - switch [::config::getKey chatstyle] { msn { ::config::setKey customchatstyle "\$tstamp [trans says \$nick]: \$newline" @@ -2540,7 +2440,6 @@ #Return the custom nick, replacing backslashses and variables set customchat [subst -nocommands $customchat] - upvar #0 [string map {: _} ${chatid} ]_smileys emotions if { [info exists emotions] } { set emoticons_for_this_chatid [array get emotions] @@ -2564,12 +2463,10 @@ ::plugins::PostEvent chat_msg_receive evPar if {![string equal $msg ""]} { - WinWrite $chatid "$message" $type $fontformat 1 $user if {[::config::getKey keep_logs]} { ::log::PutLog $chatid $nick $msg $fontformat - } } @@ -2591,7 +2488,6 @@ # ready, as most information is about connections/reconnections, and we don't # mind in case we have a "chat ready to chat". proc chatStatus {chatid msg {icon ""} {ready ""}} { - if { $chatid == 0} { return 0 } elseif { [::ChatWindow::For $chatid] == 0} { @@ -2601,7 +2497,6 @@ } else { ::ChatWindow::Status [::ChatWindow::For $chatid] $msg $icon } - } #/////////////////////////////////////////////////////////////////////////////// @@ -2613,7 +2508,6 @@ # CharsTyped (chatid,msg) # Writes the message 'msg' (number of characters typed) in the window 'win_name' status bar. proc CharsTyped { chatid msg } { - if { $chatid == 0} { return 0 } elseif { [::ChatWindow::For $chatid] == 0} { @@ -2628,7 +2522,6 @@ [::ChatWindow::GetStatusCharsTypedText ${win_name}] insert end $msg center [::ChatWindow::GetStatusCharsTypedText ${win_name}] configure -state disabled } - } #/////////////////////////////////////////////////////////////////////////////// @@ -2641,31 +2534,20 @@ # one. 'user' is the mail address of the user to chat with. #returns the name of the window proc chatUser { user } { - # set lowuser [string tolower $user] set lowuser $user - set win_name [::ChatWindow::For $lowuser] - set creating_window 0 if { $win_name == 0 } { - set creating_window 1 if { [::ChatWindow::UseContainer] == 0 } { - set win_name [::ChatWindow::Open] - ::ChatWindow::SetFor $lowuser $win_name - } else { - set container [::ChatWindow::GetContainerFor $user] - set win_name [::ChatWindow::Open $container] - ::ChatWindow::SetFor $lowuser $win_name - } set ::ChatWindow::first_message($win_name) 0 @@ -2681,8 +2563,6 @@ } else { ::amsn::ChangePicture $win_name [::skin::getDisplayPicture $user] [trans showuserpic $user] nopack } - - } set chatid [::MSN::chatTo $lowuser] @@ -2707,13 +2587,9 @@ } wm deiconify ${top_win} - - update idletasks - if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} { - ::ChatWindow::MacPosition ${top_win} - } + if { [OnMac] } { ::ChatWindow::MacPosition ${top_win} } ::ChatWindow::TopUpdate $chatid @@ -2721,17 +2597,16 @@ raise ${top_win} set container [::ChatWindow::GetContainerFromWindow $win_name] - if { $container != "" } { - ::ChatWindow::SwitchToTab $container $win_name - } + if { $container != "" } { ::ChatWindow::SwitchToTab $container $win_name } focus [::ChatWindow::GetInputText ${win_name}] return $win_name - } #/////////////////////////////////////////////////////////////////////////////// + #TODO: + #WTF is this??????????? + #And why is it HERE????? if { $initialize_amsn == 1 } { - variable urlcount 0 set urlstarts { "http://" "https://" "ftp://" "www." } } @@ -2744,7 +2619,6 @@ # where it will use the same format as "user" but size 11. # The parameter "user" is used for smiley substitution. proc WinWrite {chatid txt tagname {fontformat ""} {flicker 1} {user ""}} { - set win_name [::ChatWindow::For $chatid] if { [::ChatWindow::For $chatid] == 0} { @@ -2762,15 +2636,12 @@ set fontstyle [lindex $fontformat 1] set fontcolor [lindex $fontformat 2] - [::ChatWindow::GetOutText ${win_name}] configure -font bplainf -foreground black #Store position for later smiley and URL replacement - # use end-1c because text widgets always have \n at the end, and it's better than getting the previous line - # as we did before (creates bug when we use a custom chat style that fits in one line.. + # use end-1c because text widgets always have \n at the end, and it's better than getting the + # previous line as we did before (creates bug when we use a custom chat style that fits in one line). set text_start [[::ChatWindow::GetOutText ${win_name}] index end-1c] - #set posyx [split $text_start "."] - #set text_start "[expr {[lindex $posyx 0]-1}].[lindex $posyx 1]" #Ugly hack for elided search, but at least it works!... if { [info tclversion] == 8.4 && $tagname == "user" } { @@ -2793,7 +2664,6 @@ } } - #By default tagid=tagname unless we generate a new one set tagid $tagname @@ -2829,15 +2699,14 @@ set endpos $text_start foreach url $urlstarts { - while { $endpos != [[::ChatWindow::GetOutText ${win_name}] index end] && [set pos [[::ChatWindow::GetOutText ${win_name}] search -forward -exact -nocase \ $url $endpos end]] != "" } { - set urltext [[::ChatWindow::GetOutText ${win_name}] get $pos end] set final 0 set caracter [string range $urltext $final $final] + # Removed this: && $caracter != ")" && $caracter != "(" while { $caracter != " " && $caracter != "\n" } { set final [expr {$final+1}] set caracter [string range $urltext $final $final] @@ -2864,18 +2733,14 @@ [::ChatWindow::GetOutText ${win_name}] rodelete $pos $endpos [::ChatWindow::GetOutText ${win_name}] roinsert $pos "$urltext" $urlname + #Don't replace smileys in URLs [::ChatWindow::GetOutText ${win_name}] tag add dont_replace_smileys ${urlname}.first ${urlname}.last - } } - #update - #Avoid problems if the windows was closed in the middle... - if {![winfo exists $win_name]} { - return - } + if {![winfo exists $win_name]} { return } if {[::config::getKey chatsmileys]} { if {([::config::getKey customsmileys] && [::abook::getContactData $user showcustomsmileys] != 0) } { @@ -2891,13 +2756,8 @@ } } - - # vwait smileys_end_subst - if { $scrolling } { ::ChatWindow::Scroll [::ChatWindow::GetOutText ${win_name}] } - - if { $flicker } { ::ChatWindow::Flicker $chatid } @@ -2912,7 +2772,6 @@ proc WinWriteIcon { chatid imagename {padx 0} {pady 0}} { - set win_name [::ChatWindow::For $chatid] if { [::ChatWindow::For $chatid] == 0} { @@ -2921,18 +2780,12 @@ set scrolling [::ChatWindow::getScrolling [::ChatWindow::GetOutText ${win_name}]] - - [::ChatWindow::GetOutText ${win_name}] image create end -image [::skin::loadPixmap $imagename] -pady $pady -padx $pady if { $scrolling } { ::ChatWindow::Scroll [::ChatWindow::GetOutText ${win_name}] } - - - } proc WinWriteClickable { chatid txt command {tagid ""}} { - set win_name [::ChatWindow::For $chatid] if { [::ChatWindow::For $chatid] == 0} { @@ -2946,11 +2799,8 @@ set tagid [getUniqueValue] } - - [::ChatWindow::GetOutText ${win_name}] tag configure $tagid \ -foreground #000080 -font bboldf -underline false - [::ChatWindow::GetOutText ${win_name}] tag bind $tagid <Enter> \ "[::ChatWindow::GetOutText ${win_name}] tag conf $tagid -underline true;\ [::ChatWindow::GetOutText ${win_name}] conf -cursor hand2" @@ -2961,32 +2811,26 @@ [::ChatWindow::GetOutText ${win_name}] roinsert end "$txt" $tagid if { $scrolling } { ::ChatWindow::Scroll [::ChatWindow::GetOutText ${win_name}] } - } if { $initialize_amsn == 1 } { variable NotifID 0 variable NotifPos [list] - } proc closeAmsnMac {} { set answer [::amsn::messageBox [trans exitamsn] yesno question [trans title]] - if { $answer == "yes"} { - exit - } + if { $answer == "yes"} { exit } } + ### + ### $closingdocks: 0 / unexistant = ask + ### 1 = dock + ### 2 = close proc closeOrDock { closingdocks } { -### -### $closingdocks: 1 = dock -### 2 = close -### 0 /unexistant = ask - global rememberdock set rememberdock 0 - if {$closingdocks == 1} { closeOrDockDock } elseif { $closingdocks == 2} { @@ -3015,7 +2859,6 @@ label $w.top.question -text "[trans closeordock]" -wraplength 400 -justify left pack $w.top.question -pady 0 -padx 0 -side top - checkbutton $w.top.remember -text [trans remembersetting] -variable rememberdock -anchor w pack $w.top.remember -pady 5 -padx 10 -side bottom -fill x @@ -3063,12 +2906,12 @@ unset rememberdock exit } + #Adds a message to the notify, that executes "command" when clicked, and #plays "sound" proc notifyAdd { msg command {sound ""} {type online} {user ""}} { - #no notifications in bossmode or if disabled if { [winfo exists .bossmode] || [::config::getKey shownotify] == 0} { return @@ -3081,7 +2924,6 @@ # Check if we only want to play the sound notification if { [::config::getKey notifyonlysound] == 0 } { - #have a unique name variable NotifID #the position, always incremented with height @@ -3107,16 +2949,6 @@ set xpos [::config::getKey notifyXoffset] set ypos [::config::getKey notifyYoffset] - #Avoid a bugreport if someone removed his xpos or ypos variable in the preferences - #This seems to be fixed in preferences.tcl line 2965 -# if {$xpos == ""} { -# ::config::setKey notifyXoffset 100 -# set xpos [::config::getKey notifyXoffset] -# } -# if {$ypos == ""} { -# ::config::setKey notifyYoffset 75 -# set ypos [::config::getKey notifyYoffset] -# } if { $xpos < 0 } { set xpos 0 } if { $ypos < 0 } { set ypos 0 } @@ -3134,21 +2966,11 @@ #set the background picture switch $type { - online { - $w.c create image 0 0 -anchor nw -image [::skin::loadPixmap notifyonline] -tag bg - } - offline { - $w.c create image 0 0 -anchor nw -image [::skin::loadPixmap notifyoffline] -tag bg - } - state { - $w.c create image 0 0 -anchor nw -image [::skin::loadPixmap notifystate] -tag bg - } - plugins { - $w.c create image 0 0 -anchor nw -image [::skin::loadPixmap notifyplugins] -tag bg - } - default { - $w.c create image 0 0 -anchor nw -image [::skin::loadPixmap notifyonline] -tag bg - } + online { $w.c create image 0 0 -anchor nw -image [::skin::loadPixmap notifyonline] -tag bg } + offline { $w.c create image 0 0 -anchor nw -image [::skin::loadPixmap notifyoffline] -tag bg } + state { $w.c create image 0 0 -anchor nw -image [::skin::loadPixmap notifystate] -tag bg } + plugins { $w.c create image 0 0 -anchor nw -image [::skin::loadPixmap notifyplugins] -tag bg } + default { $w.c create image 0 0 -anchor nw -image [::skin::loadPixmap notifyonline] -tag bg } } #If it's a notification about a user (user var given) and there is an image (the creation results 1) and we have the config set to show the image, show the display-picture @@ -3169,38 +2991,30 @@ -text "$msg" -tag bg] } - #add the close button $w.c create image [::skin::getKey x_notifyclose] [::skin::getKey y_notifyclose] -anchor nw -image [::skin::loadPixmap notifclose] -tag close - if {[string length $msg] >100} { set msg "[string range $msg 0 100]..." } set after_id [after [::config::getKey notifytimeout] "::amsn::KillNotify $w $ypos"] - $w.c bind bg <Enter> "$w.c configure -cursor hand2" $w.c bind bg <Leave> "$w.c configure -cursor left_ptr" $w.c bind bg <ButtonRelease-1> "after cancel $after_id; ::amsn::KillNotify $w $ypos; $command" $w.c bind bg <ButtonRelease-3> "after cancel $after_id; ::amsn::KillNotify $w $ypos" - - $w.c bind close <Enter> "$w.c configure -cursor hand2" $w.c bind close <Leave> "$w.c configure -cursor left_ptr" $w.c bind close <ButtonRelease-1> "after cancel $after_id; ::amsn::KillNotify $w $ypos" - #no title needed" -# wm title $w "[trans msn] [trans notify]" wm overrideredirect $w 1 - #wm transient $w #now show it wm state $w normal - #Raise $w to correct a bug win "wm geometry" in AquaTK (Mac OS X) - if {[OnMac]} { + if { [OnMac] } { + #Raise $w to correct a bug in "wm geometry" in AquaTK (Mac OS X) lower $w } @@ -3211,16 +3025,10 @@ wm geometry $w -$xpos-[expr {$ypos-100}] after 50 "::amsn::growNotify $w $xpos [expr {$ypos-100}] $ypos" } - } - - - - } proc growNotify { w xpos currenty finaly } { - if { [winfo exists $w] == 0 } { return 0} if { $currenty>$finaly} { @@ -3242,14 +3050,13 @@ set lpos [lsearch -exact $NotifPos $ypos] set NotifPos [lreplace $NotifPos $lpos $lpos] } - } #/////////////////////////////////////////////////////////////////////// proc cmsn_draw_main {} { global emotion_files date weburl lang_list \ - password HOME pgBuddy pgBuddyTop pgNews argv0 argv langlong tcl_platform + password HOME pgBuddy pgBuddyTop pgNews argv0 argv langlong #User status menu menu .my_menu -tearoff 0 -type normal @@ -3265,13 +3072,9 @@ # Add the personal states to this menu CreateStatesMenu .my_menu - #Preferences dialog/menu - #menu .pref_menu -tearoff 0 -type normal - menu .user_menu -tearoff 0 -type normal menu .user_menu.move_group_menu -tearoff 0 -type normal menu .user_menu.copy_group_menu -tearoff 0 -type normal -# menu .user_menu.actions -tearoff 0 -type normal menu .menu_invite -tearoff 0 -type normal #Main menu @@ -3285,9 +3088,8 @@ # Add the menus in the menubar # ###################################################### - - #for apple, the first menu is the "App menu" - if {[OnMac]} { + #For apple, the first menu is the "App menu" + if { [OnMac] } { .main_menu add cascade -label "aMSN" -menu .main_menu.apple set appmenu .main_menu.apple menu $appmenu -tearoff 0 -type normal @@ -3295,14 +3097,15 @@ -command ::amsn::aboutWindow $appmenu add separator $appmenu add command -label "[trans skinselector]" \ - -command ::skinsGUI::SelectSkin -accelerator "Command-Shift-S" + -command ::skinsGUI::SelectSkin -accelerator "Command-Shift-S" $appmenu add command -label "[trans pluginselector]" \ - -command ::plugins::PluginGui -accelerator "Command-Shift-P" + -command ::plugins::PluginGui -accelerator "Command-Shift-P" $appmenu add separator $appmenu add command -label "[trans preferences]..." \ -command Preferences -accelerator "Command-," $appmenu add separator } + .main_menu add cascade -label "[trans account]" -menu .main_menu.account .main_menu add cascade -label "[trans view]" -menu .main_menu.view .main_menu add cascade -label "[trans actions]" -menu .main_menu.actions @@ -3310,56 +3113,49 @@ .main_menu add cascade -label "[trans help]" -menu .main_menu.helpmenu - ########################### #Account menu ########################### set accnt .main_menu.account menu $accnt -tearoff 0 -type normal + #Note: One might think we should always have both entries (login and login_as) + #in the menu with "login" (with profile) greyed out if it's not available. + #Though, this makes us have 2 entries that are allmost the same, definitely + #in the translated string. As this menu doesn't swap all the time and only + #does so when once this option is set to have a profile, I don't think there's + #a problem of having this entry not be there when there is no profile. + #It's like, when you load a plugin for a new action it can add an item but that + #item wasn't there before and greyed out. + #Log in with default profile if { [string length [::config::getKey login]] > 0 && $password != ""} { $accnt add command -label "[trans login] ([::config::getKey login])"\ -command ::MSN::connect -state normal } - #log in with another profile $accnt add command -label "[trans loginas]..." -command cmsn_draw_login -state normal - -#Note: One might think we should always have both entries (login and login_as) in the menu with "login" (with profile) greyed out if it's not available. Though, this makes us have 2 entries that are allmost the same, definately in the translated string. As this menu doesn't swap all the time and only does so when once this option is set to have a profile, I don't think there's a problem of having this entry not be there when there is no profile. It's like, when you load a plugin for a new action it can add an item but that item wasn't there before and greyed out. - #log out $accnt add command -label "[trans logout]" -command "::MSN::logout" -state disabled - #------------------- $accnt add separator - #change status submenu $accnt add cascade -label "[trans changestatus]" -menu .my_menu -state disabled - #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 separator - #go to inbox $accnt add command -label "[trans gotoinbox]" -command "::hotmail::hotmail_login" -state disabled - #go to my profile $accnt add command -label "[trans editprofile]" -command "::hotmail::hotmail_profile" -state disabled - - #------------------- $accnt add separator - #received files $accnt add command -label "[trans openreceived]" -command {launch_filemanager\ "[::config::getKey receiveddir]"} - #events history $accnt add command -label "[trans eventhistory]" -command "::log::OpenLogWin eventlog" -state disabled @@ -3367,28 +3163,18 @@ if {![OnMac]} { #------------------- $accnt add separator - # $accnt add checkbutton -label "[trans sound]" -onvalue 1 -offvalue 0 -variable [::config::getVar sound]u - $accnt add command -label "[trans skinselector]" -command ::skinsGUI::SelectSkin - $accnt add command -label "[trans pluginselector]" -command ::plugins::PluginGui - $accnt add command -label "[trans preferences]" -command Preferences -accelerator "Ctrl-P" - #------------------- $accnt add separator - #Minimize to tray $accnt add command -label "[trans minimize]" -command "::amsn::closeOrDock 1" #Terminate aMSN $accnt add command -label "[trans quit]" -command "::amsn::closeOrDock 2" -accelerator "Ctrl-Q" } - - - - ########################### #View menu ########################### @@ -3402,30 +3188,22 @@ -variable [::config::getVar orderbygroup] -command "cmsn_draw_online 0 2" -state disabled $view add radio -label "[trans sortcontacthybrid]" -value 2 \ -variable [::config::getVar orderbygroup] -command "cmsn_draw_online 0 2" -state disabled - #------------------- $view add separator - $view add radio -label "[trans showcontactnick]" -value 0 \ -variable [::config::getVar emailsincontactlist] -command "cmsn_draw_online 0 2" -state disabled $view add radio -label "[trans showcontactemail]" -value 1 \ -variable [::config::getVar emailsincontactlist] -command "cmsn_draw_online 0 2" -state disabled - #------------------- $view add separator - $view add command -label "[trans changeglobnick]..." -command "::abookGui::SetGlobalNick" - #------------------- $view add separator - $view add radio -label "[trans sortgroupsasc]" -value 1 \ -variable [::config::getVar ordergroupsbynormal] -command "cmsn_draw_online 0 2" -state disabled $view add radio -label "[trans sortgroupsdesc]" -value 0 \ -variable [::config::getVar ordergroupsbynormal] -command "cmsn_draw_online 0 2" -state disabled - - ########################### #Actions menu ########################### @@ -3434,25 +3212,18 @@ #Send msg $actions add command -label "[trans sendmsg]..." -command [list ::amsn::ShowUserList [trans sendmsg] ::amsn::chatUser] -state disabled - #Send SMS $actions add command -label "[trans sendmobmsg]..." -command [list ::amsn::ShowUserList [trans sendmobmsg] ::MSNMobile::OpenMobileWindow] -state disabled - #Send e-mail $actions add command -label "[trans sendmail]..." -command [list ::amsn::ShowUserList [trans sendmail] launch_mailer] -state disabled - #------------------- $actions add separator - #Send File $actions add command -label "[trans sendfile]..." -command [list ::amsn::ShowUserList [trans sendfile] ::amsn::FileTransferSend] -state disabled - #Send Webcam $actions add command -label "[trans sendcam]..." -command "" -command [list ::amsn::ShowUserList [trans sendcam] ::MSNCAM::SendInviteQueue] -state disabled - #Ask Webcam $actions add command -label "[trans askcam]..." -command "" -command [list ::amsn::ShowUserList [trans askcam] ::MSNCAM::AskWebcamQueue] -state disabled - ########################### #Contacts menu @@ -3462,49 +3233,35 @@ #add contact $conts add command -label "[trans addacontact]..." -command cmsn_draw_addcontact -state disabled - #remove contact $conts add command -label "[trans delete]..." -command [list ::amsn::ShowUserList [trans delete] ::amsn::deleteUser] -state disabled - #contact properties $conts add command -label "[trans properties]..." -command [list ::amsn::ShowUserList [trans properties] ::abookGui::showUserProperties] -state disabled - #------------------- $conts add separator - #Add group $conts add command -label "[trans groupadd]..." -state disabled -command ::groups::dlgAddGroup - #remove group $conts add cascade -label "[trans groupdelete]" -state disabled -menu .group_list_delete - - #rename group $conts add cascade -label "[trans grouprename]" -state disabled -menu .group_list_rename ::groups::Init $conts - #------------------- $conts add separator - #chat history $conts add command -label "[trans history]" -command ::log::OpenLogWin -state disabled - #webcam history $conts add command -label "[trans webcamhistory]" -command ::log::OpenCamLogWin -state disabled - #------------------- $conts add separator - $conts add command -label "[trans savecontacts]..." \ -command "saveContacts" -state disabled $conts add command -label "[trans loadcontacts]..." \ -command "::abook::importContact" -state disabled - ########################### #Help menu ########################### - set help .main_menu.helpmenu menu $help -tearoff 0 -type normal @@ -3532,184 +3289,55 @@ $help add command -label "[trans about]" -command ::amsn::aboutWindow } - - #add a postevent to modify the main menu set evPar(menu) .main_menu ::plugins::PostEvent mainmenu evPar + # Show the menubar if config allows it (or we're on Mac) + if { [OnMac] || [::config::getKey showmainmenu -1] } { . conf -menu .main_menu } - - ###################################################### - # Set these menus for the main window # - ###################################################### - . conf -menu .main_menu - - - ::config::setKey adverts 0 - - - - #image create photo mainback -file [::skin::GetSkinFile pixmaps back.gif] - wm title . "[trans title] - [trans offline]" wm command . [concat $argv0 $argv] wm group . . - - #For All Platforms (except Mac) - if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} { + + if { [OnMac] } { frame .main -class Amsn -relief flat -background white - #Create the frame for play_Sound_Mac - frame .fake + frame .fake ;#Create the frame for play_Sound_Mac } else { #Put the color of the border around the contact list (from the skin) frame .main -class Amsn -relief flat -background [::skin::getKey mainwindowbg] } - - frame .main.f -class Amsn -relief flat -background white -borderwidth 0 pack .main -fill both -expand true pack .main.f -expand true -fill both -padx [::skin::getKey buddylistpad] -pady [::skin::getKey buddylistpad] -side top - #pack .main -expand true -fill both - #pack .main.f -expand true -fill both -padx 4 -pady 4 -side top - # Create the Notebook and initialize the page paths. These - # page paths must be used for adding new widgets to the - # notebook tabs. if {[::config::getKey withnotebook]} { + # Create the Notebook and initialize the page paths. These + # page paths must be used for adding new widgets to the + # notebook tabs. (This is disabled by default) NoteBook .main.f.nb -background white .main.f.nb insert end buddies -text "Buddies" .main.f.nb insert end news -text "News" - set pgBuddy [.main.f.nb getframe buddies] - set pgNews [.main.f.nb getframe news] - .main.f.nb raise buddies - .main.f.nb compute_size - pack .main.f.nb -fill both -expand true -side top + set pgBuddy [.main.f.nb getframe buddies] + set pgNews [.main.f.nb getframe news] + .main.f.nb raise buddies + .main.f.nb compute_size + pack .main.f.nb -fill both -expand true -side top } else { + # Set what's necessary to make it work without the notebook set pgBuddy .main.f set pgNews "" } - # End of Notebook Creation/Initialization - #New image proxy system - ::skin::setPixmap msndroid msnbot.gif - ::skin::setPixmap online online.gif - ::skin::setPixmap offline offline.gif - ::skin::setPixmap away away.gif - ::skin::setPixmap busy busy.gif - ::skin::setPixmap mobile mobile.gif + # Set default pixmap names + ::skin::SetPixmapNames - ::skin::setPixmap bonline bonline.gif - ::skin::setPixmap boffline boffline.gif - ::skin::setPixmap baway baway.gif - ::skin::setPixmap bbusy bbusy.gif - ::skin::setPixmap mystatus_bg mystatus_bg.gif - - ::skin::setPixmap mailbox unread.gif - - ::skin::setPixmap contract contract.gif - ::skin::setPixmap contract_hover contract_hover.gif - ::skin::setPixmap expand expand.gif - ::skin::setPixmap expand_hover expand_hover.gif - - ::skin::setPixmap globe globe.gif - ::skin::setPixmap download download.gif - ::skin::setPixmap warning warning.gif - - ::skin::setPixmap button button.gif - ::skin::setPixmap button_hover button_hover.gif - ::skin::setPixmap button_pressed button_pressed.gif - ::skin::setPixmap button_disabled button_disabled.gif - ::skin::setPixmap button_focus button_focus.gif - - ::skin::setPixmap typingimg typing.gif - ::skin::setPixmap miniinfo miniinfo.gif - ::skin::setPixmap miniwarning miniwarn.gif - ::skin::setPixmap minijoins minijoins.gif - ::skin::setPixmap minileaves minileaves.gif - - ::skin::setPixmap cwtopback cwtopback.gif - ::skin::setPixmap camicon camicon.gif - - - ::skin::setPixmap butsmile butsmile.gif - ::skin::setPixmap butsmile_hover butsmile_hover.gif - ::skin::setPixmap butfont butfont.gif - ::skin::setPixmap butfont_hover butfont_hover.gif - ::skin::setPixmap butblock butblock.gif - ::skin::setPixmap butblock_hover butblock_hover.gif - ::skin::setPixmap butsend butsend.gif - ::skin::setPixmap butsend_hover butsend_hover.gif - ::skin::setPixmap butinvite butinvite.gif - ::skin::setPixmap butinvite_hover butinvite_hover.gif - ::skin::setPixmap butwebcam butwebcam.gif - ::skin::setPixmap butwebcam_hover butwebcam_hover.gif - ::skin::setPixmap butnewline newline.gif - ::skin::setPixmap sendbutton sendbut.gif - ::skin::setPixmap sendbutton_hover sendbut_hover.gif - ::skin::setPixmap imgshow imgshow.gif - ::skin::setPixmap imgshow_hover imgshow_hover.gif - ::skin::setPixmap imghide imghide.gif - ::skin::setPixmap imghide_hover imghide_hover.gif - - ::skin::setPixmap button button.gif - ::skin::setPixmap button_hover button_hover.gif - ::skin::setPixmap button_pressed button_pressed.gif - ::skin::setPixmap button_disabled button_disabled.gif - - ::skin::setPixmap ring ring.gif - ::skin::setPixmap ring_disabled ring_disabled.gif - - ::skin::setPixmap winwritecam cam_in_chatwin.png - - ::skin::setPixmap webcam webcam.png - ::skin::setPixmap camempty camempty.png - ::skin::setPixmap yes-emblem yes-emblem.gif - ::skin::setPixmap no-emblem no-emblem.gif - - - ::skin::setPixmap fticon fticon.gif - ::skin::setPixmap ftreject ftreject.gif - - ::skin::setPixmap notifico notifico.gif - ::skin::setPixmap notifclose notifclose.gif - ::skin::setPixmap notifyonline notifyonline.gif - ::skin::setPixmap notifyoffline notifyoffline.gif - ::skin::setPixmap notifyplugins notifyplugins.gif - ::skin::setPixmap notifystate notifystate.gif - - ::skin::setPixmap blocked blocked.gif - ::skin::setPixmap blocked_off blocked_off.gif - ::skin::setPixmap colorbar colorbar.gif - - ::skin::setPixmap bell bell.gif - ::skin::setPixmap belloff belloff.gif - - ::skin::setPixmap notinlist notinlist.gif - ::skin::setPixmap smile smile.gif - - ::skin::setPixmap loganim loganim.gif - - ::skin::setPixmap greyline greyline.gif - - ::skin::setPixmap nullimage null - #set the nullimage transparent - [::skin::loadPixmap nullimage] blank - if { $tcl_platform(os) == "Darwin" } { - ::skin::setPixmap logolinmsn logomacmsn.gif - ::skin::setPixmap arrow arrowmac.gif - } else { - ::skin::setPixmap logolinmsn logolinmsn.gif - ::skin::setPixmap arrow arrow.gif - } - set pgBuddyTop $pgBuddy.top frame $pgBuddyTop -background [::skin::getKey topcontactlistbg] -width 30 -height 30 -cursor left_ptr \ -borderwidth 0 -relief flat -bd 0 - if { $::tcl_version >= 8.4 } { - $pgBuddyTop configure -padx 0 -pady 0 - } + + $pgBuddyTop configure -padx 0 -pady 0 ScrolledWindow $pgBuddy.sw -auto vertical -scrollbar vertical -ipad 0 pack $pgBuddy.sw -expand true -fill both @@ -3726,39 +3354,16 @@ frame .main.eventmenu combobox::combobox .main.eventmenu.list -editable false -highlightthickness 0 -width 22 -bg #FFFFFF -font splainf -exportselection false - # Initialize the banner for when the user wants to see aMSN Banner - #adv_initialize .main - # Add the banner to main window when the user wants (By default "Yes") - #resetBanner - - #As the ctadverts isn't used really, I'm putting the code for the normal banner here: + #Display the amsn banner if it is enabled label .main.banner -bd 0 -relief flat -background [::skin::getKey bannerbg] pack .main.banner -side bottom -fill x resetBanner - - #if {[::config::getKey enablebanner]} { - - # If user wants to see aMSN Banner, we add it to main window (By default "Yes") - # adv_initialize .main - - # This one is not a banner but a branding. When adverts are enabled - # they share this space with the branding image. The branding image - # is cycled in between adverts. - # if {$tcl_platform(os) == "Darwin"} { - # ::skin::setPixmap banner logomacmsn.gif - #adv_show_banner file [::skin::GetSkinFile pixmaps logomacmsn.gif] - # } else { - # ::skin::setPixmap banner logolinmsn.gif - #adv_show_banner file [::skin::GetSkinFile pixmaps logolinmsn.gif] - # } - #} - #delete F10 binding that crashes amsn bind all <F10> "" #Set key bindings. They are different on Mac. (e.g. Command key instead of Control) - if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} { + if { [OnMac] } { #Status log bind . <Command-s> toggle_status # Command-Shift-s is now used by the skin menuitem in appmenu. @@ -3772,22 +3377,23 @@ bind . <Command-P> ::plugins::PluginGui #Preferences bind . <Command-,> Preferences - #BossMode - # Command Alt space is used as a global key combo since Mac OS X 10.4. - #bind . <Command-Alt-space> BossMode + #BossMode (Command Alt space is used as a global key combo since Mac OS X 10.4.) bind . <Command-Shift-space> BossMode #Plugins log bind . <Option-p> ::pluginslog::toggle bind . <Option-P> ::pluginslog::toggle - #Minimize contact list - bind . <Command-m> "catch {carbon::processHICommand mini .}" - bind . <Command-M> "catch {carbon::processHICommand mini .}" - #Help - bind all <Command-?> "::amsn::showHelpFileWindow HELP [list [trans helpcontents]]" - #Exit + #Quit bind all <Command-q> "exit" bind all <Command-Q> "exit" + #Raise cl window bind all <Command-Key-1> "raise ." + #Online Help + bind all <Command-?> "launch_browser http://amsn.sourceforge.net/userwiki/index.php/Main_Page" + + bind all <Command-m> "catch {carbon::processHICommand mini %W}" + bind all <Command-M> "catch {carbon::processHICommand mini %W}" + bind all <Command-quoteleft> "catch {carbon::processHICommand rotw %W}" + bind all <Command-asciitilde> "catch {carbon::processHICommand rotb %W}" } else { #Status log bind . <Control-s> toggle_status @@ -3801,26 +3407,22 @@ bind . <Control-q> exit #Boss mode bind . <Control-Alt-space> BossMode - # Show/hide menu binding with toggle == 1 bind . <Control-m> "Showhidemenu 1" - # Make sure we restore the previous setting - Showhidemenu 0 } + #Set the wm close button action if { [OnMac] } { wm protocol . WM_DELETE_WINDOW { ::amsn::closeAmsnMac } } else { wm protocol . WM_DELETE_WINDOW {::amsn::closeOrDock [::config::getKey closingdocks]} } + #Draw main window contents cmsn_draw_status cmsn_draw_offline -# status_log "Proxy is : [::config::getKey proxy]\n" - - #wm iconname . "[trans title]" - if {$tcl_platform(platform) == "windows"} { + if { [OnWin] } { catch {wm iconbitmap . [::skin::GetSkinFile winicons msn.ico]} catch {wm iconbitmap . -default [::skin::GetSkinFile winicons msn.ico]} } else { @@ -3828,22 +3430,26 @@ catch {wm iconmask . @[::skin::GetSkinFile pixmaps amsnmask.xbm]} } - #Unhide main window now that it has finished being created - - update - - wm state . normal - #Set the position on the screen and the size for the contact list, from config - catch {wm geometry . [::config::getKey wingeometry]} - #To avoid the bug of window behind the bar menu on Mac OS X - if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} { - moveinscreen . 30 + update + + #Unhide main window now that it has finished being created + wm state . normal + #Set the position on the screen and the size for the contact list, from config + #Check if the geometry is available : + set geometry [::config::getKey wingeometry] + set width 0 + set height 0 + set x 0 + set y 0 + set modified 0 + regexp {=?(\d+)x(\d+)[+\-](-?\d+)[+\-](-?\d+)} $geometry -> width height x y + if {[expr {$width + $x}] > [winfo screenwidth .]} { + set modified 1 + if { [OnMac] } { + set x 200 + } else { + set x 0 } -<<<<<<< .working - #Will be loaded when we log in - #load_my_pic - -======= } if {[expr {$width}] > [winfo screenwidth .]} { set modified 1 @@ -3873,12 +3479,8 @@ moveinscreen . 30 } ->>>>>>> .merge-right.r7189 #allow for display updates so window size is correct - update idletasks - - } #/////////////////////////////////////////////////////////////////////// @@ -3886,8 +3488,6 @@ proc loggedInGuiConf { event } { - - ################################################################ # Enable menu entries that are greyed out when not logged in ################################################################ @@ -3897,15 +3497,13 @@ } else { $menu entryconfigure $entry -state disabled } - } + proc enableEntries {menu entrieslist {state 1}} { foreach index $entrieslist { enable $menu $index $state } } - - set menu .main_menu.account @@ -3931,22 +3529,18 @@ set menu .main_menu.contacts enableEntries $menu [list 0 1 2 4 5 6 8 9 11 12] - - - ################################################################ # Create the groups menus ################################################################ ::groups::updateMenu menu .group_list_delete ::groups::menuCmdDelete ::groups::updateMenu menu .group_list_rename ::groups::menuCmdRename - } proc loggedOutGuiConf { event } { ################################################################ # Enable menu entries that are greyed out when not logged in ################################################################ - proc enable { menu entry {state 1}} { + proc enable { menu entry {state 1} } { if { $state == 1 } { $menu entryconfigure $entry -state normal } else { @@ -3954,6 +3548,7 @@ } } + proc enableEntries {menu entrieslist {state 1}} { foreach index $entrieslist { enable $menu $index $state @@ -3983,16 +3578,13 @@ #contacts menu set menu .main_menu.contacts enableEntries $menu [list 0 1 2 4 5 6 8 9 11 12] 0 - } proc ShowFirstTimeMenuHidingFeature { parent } { return [expr [tk_messageBox -default no -icon warning -title [trans hidemenu] -message [trans hidemenumessage] -parent $parent -type yesno] == yes] } - proc Showhidemenu { {toggle 0} } { - if {$toggle} { if { [::config::getKey showmainmenu -1] == -1 } { if { [ShowFirstTimeMenuHidingFeature .] == 0 } { @@ -4000,7 +3592,6 @@ } } ::config::setKey showmainmenu [expr ![::config::getKey showmainmenu -1]] - } if { [::config::getKey showmainmenu -1]} { @@ -4008,7 +3599,6 @@ } else { . configure -menu "" } - } @@ -4050,16 +3640,10 @@ set fontstyle [lindex [::config::getKey $key] 1] set fontcolor [lindex [::config::getKey $key] 2] - #if { [catch { - # set selfont_and_color [choose_font .${win_name} [trans choosebasefont] [list $fontname $fontsize $fontstyle] "#$fontcolor"] - # }]} { + if { $fontname == "" } { set fontname helvetica } + if { $fontcolor == "" } { set fontcolor 000000 } + set selfont_and_color [choose_font .${win_name} [trans choosebasefont] [list $fontname $fontsize $fontstyle] "#$fontcolor"] - if { $fontname == "" } { set fontname helvetica } - if { $fontcolor == "" } { set fontcolor 000000 } - set selfont_and_color [choose_font .${win_name} [trans choosebasefont] [list $fontname $fontsize $fontstyle] "#$fontcolor"] - - #} - set selfont [lindex $selfont_and_color 0] set selcolor [lindex $selfont_and_color 1] @@ -4079,14 +3663,11 @@ ::config::setKey $key [list $sel_fontfamily $sel_fontstyle $selcolor] - change_myfontsize [::config::getKey textsize] - } #/////////////////////////////////////////////////////////////////////// proc change_myfontsize { size {windows ""}} { - set basesize [lindex [::config::getGlobalKey basefont] 1] #Get current font configuration @@ -4114,7 +3695,6 @@ } ::config::setKey textsize $size - } @@ -4144,13 +3724,12 @@ #/////////////////////////////////////////////////////////////////////// proc play_sound {sound {absolute_path 0} {force_play 0}} { - #If absolute_path == 1 it means we don't have to get the sound #from the skin, but just use it as an absolute path to the sound file if { [::config::getKey sound] == 1 || $force_play == 1} { #Activate snack on Mac OS X (remove that during 0.94 CVS) - if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} { + if { [OnMac] } { if { $absolute_path == 1 } { play_Sound_Mac $sound } else { @@ -4183,14 +3762,10 @@ } proc play_sound_other {sound} { - global tcl_platform - if { [string first "\$sound" [::config::getKey soundcommand]] == -1 } { ::config::setKey soundcommand "[::config::getKey soundcommand] \$sound" } - - set soundcommand [::config::getKey soundcommand] #Escape spaces in sounds @@ -4211,6 +3786,7 @@ #Prepare the sound command for variable substitution set command [::config::getKey soundcommand] set command [string map {"\[" "\\\[" "\\" "\\\\" "\$" "\\\$" "\(" "\\\(" } $command] + #Now, let's unquote the variables we want to replace set command "|[string map {"\\\$sound" "\${sound_file}" } $command]" set command [subst -nocommands $command] @@ -4270,30 +3846,30 @@ #play_Sound_Mac Play sounds on Mac OS X with the extension "QuickTimeTcl" proc play_Sound_Mac {sound} { - set sound_name [file tail $sound] - #Find the name of the sound without .wav or .mp3, etc - set sound_small [string first "." "$sound_name"] - incr sound_small -1 - set sound_small_name [string range $s... [truncated message content] |