⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 amsn

📁 Linux下的MSN聊天程序源码
💻
字号:
#!/bin/bash# \exec wish $0#########################################################################                                              ##################        Alvaro's Messenger - amsn             ##################                                              ##################       http://amsn.sourceforge.net            ##################     amsn-users@lists.sourceforge.net         ##################                                              ################################################################################## airadier at users.sourceforge.net (airadier) ################## Universidad de Zaragoza                      ################## http://aim.homelinux.com                     ################################################################################## grimaldo@panama.iaehv.nl (LordOfScripts)     ################## http://www.coralys.com/linux/                ################################################################################## Original ccmsn                               ################## http://msn.CompuCreations.com/               ################## Dave Mifsud <dave at CompuCreations dot com> ######################################################################################## This program is free software; you can redistribute it and/or modify### it under the terms of the GNU General Public License as published by### the Free Software Foundation; version 2 of the License###### This program is distributed in the hope that it will be useful,### but WITHOUT ANY WARRANTY; without even the implied warranty of### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the### GNU General Public License for more details.###### You should have received a copy of the GNU General Public License### along with this program; if not, write to the Free Software### Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA##################################################################### Hide the window until it has been fully displayed############################################################package require Tkwm state . withdraw############################################################### Some global variables############################################################# variable rcversion so autoupdate has no problems, version is used to be easier for users# rcversion major.minor.patch, patch is 91,92 for RC's and after a release we put .svn# behind the version (after 0.95.90 comes 0.95.90.svn, after 0.96 comes 0.96.90.svn)set version "0.96rc1"set rcversion "0.95.91"set date "06/16/2006"set weburl "http://amsn.sourceforge.net"set program_dir "."set HOME ""set HOME2 ""#=======================================================================############################################################### Look if we are launched from a link### and set the correct working dir#############################################################Fixed by Tomasz Nguyenset program_dir [file dirname [info script]]set program [file tail [info script]]while {[catch {file readlink [file join $program_dir $program]} program]== 0} {	if {[file pathtype $program] == "absolute"} {		set program_dir [file dirname $program]	} else {		set program_dir [file join $program_dir [file dirname $program]]	}	set program [file tail $program]}set starting_dir [pwd]cd $program_dirset program_dir [pwd]unset program#unset program_dir############################################################### Setup other important directory paths### depending on the platform############################################################if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} {	set HOME "[file join $env(HOME) Library/Application\ Support/amsn]"} elseif {$tcl_platform(platform) == "unix"} {   set HOME "[file join $env(HOME) .amsn]"} elseif {$tcl_platform(platform) == "windows"} {  if {[info exists env(USERPROFILE)]} {     set HOME "[file join $env(USERPROFILE) amsn]"  } else {   set HOME "[file join [pwd] amsn_config]"  }} else {   set HOME "[file join [pwd] amsn_config]"}set HOME2 $HOME############################################################### And setup where to find optional packages############################################################lappend auto_path [file join ${HOME} plugins]#Specific folder to check for package on platformsif {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} {	lappend auto_path [file join utils macosx]} elseif {$tcl_platform(platform) == "windows"} {	lappend auto_path [file join utils windows]} elseif {$tcl_platform(platform) == "unix"} {	lappend auto_path [file join utils linux]}lappend auto_path [file join utils]set libtls ""catch { source [file join $HOME tlsconfig.tcl] }if { $libtls != "" && [lsearch $auto_path $libtls] == -1 } {    lappend auto_path $libtls}#TODO: Move this from here ??#///////////////////////////////////////////////////////////////////////#Notebook Pages (Buddies,News,Calendar,etc.)set pgBuddy ""set pgNews  ""#///////////////////////////////////////////////////////////////////////################################################################ Load program modules############################################################set initialize_amsn 1proc load_console {} {	if { [info proc console] == "" && [info command console] == "" } {		if { [file exists console.tcl] && [file readable console.tcl] } {			uplevel \#0 {source console.tcl}			console show		}	} else {		console show	}}proc reload_files { } {    uplevel \#0 {		source ctthemes.tcl	source progressbar.tcl	;# Progressbar Megawidget	source migmd5.tcl	source des.tcl		;# DES encryption	source sxml.tcl   	;# Simple XML parser#	source combobox.tcl	;# The all mighty combobox is here! (B. Oakley)	package require combobox		source mutex.tcl	source lang.tcl	source automsg.tcl	source smileys.tcl	source skins.tcl	;# Used for skinning purposes	source remote.tcl	;# The remote control procedures	source chatwindow.tcl	;# Abstracted Chat Window code (::ChatWindow namespace)	source picture.tcl ; #Tkcximage procs	source gui.tcl		;#gui.tcl must be at the beginning to make msg_box procedure available for errors	source abook.tcl	;# Handle buddy address book    	source protocol.tcl	source plugins.tcl	;# Plugins system must be loaded before config	source pluginslog.tcl	source config.tcl	;# config needs to be loaded before pluginslog for translations	source proxy.tcl	source msnp2p.tcl	source msncam.tcl#	source ctadverts.tcl	source preferences.tcl	source hotmail.tcl	source groups.tcl	;# Handle buddy groups	if {$tcl_platform(os) == "Darwin"} {		source [file join utils macosx applescript ae.tcl];#AppleEvent support	}	source alarm.tcl	;# Alarms code (Burger)	source dock.tcl		;# Docking routines	source trayicon.tcl	;# Docking routines for freedesktop system tray compliant docks	source loging.tcl	;# Euh yeh it's for loging :P	source searchdialog.tcl ;# Search dialog widget	source balloon.tcl	;# For the balloons tooltip	source autoupdate.tcl   ;# AUTOUPDATE!!!!!!!!!! :@	source notes.tcl		source guicontactlist.tcl ;# New contact list (uses canvas)	source bugs.tcl 	;#bug reporting    }}proc after_info { } {	foreach f [after info] {		status_log "After $f : [after info $f]\n" red	}}if { $::tcl_version < 8.4 } {	proc K {a b} {return $a}	proc lset_r {list args val} {		if { [llength $args] == "0" } {			return $val		} else {			return [lreplace $list [lindex $args 0] [lindex $args 0] [lset_r [lindex $list [lindex $args 0]] [lrange $args 1 end] $val]]		}	}	proc lset {listName args} {		upvar $listName list		set list [lset_r [K $list [set list {}]] [lrange $args 0 end-1] [lindex $args end]]	}}reload_filesset initialize_amsn 0#///////////////////////////////////////////////////////////////////////if { [catch {package require tls}] } {    # Either tls is not installed, or $auto_path does not point to it.    # Should now never happen; the check for the presence of tls is made    # before this point.#    status_log "Could not find the package tls on this system.\n"    set tlsinstalled 0} else {    set tlsinstalled 1}#create_dir $HOMEset log_dir "[file join ${HOME} logs]"set webcam_dir "[file join ${HOME} webcam]"create_dir $log_dircreate_dir $webcam_dirNS create ns -stat d -server [split [::config::getKey start_ns_server] ":"]set family [lindex [::config::getGlobalKey basefont] 0]set size [lindex [::config::getGlobalKey basefont] 1]::themes::Initif { $family == "" } { set family "Helvetica"}if { $size == "" } { set size "11"}::amsn::initLook $family $size [::config::getKey backgroundcolor]set ::auto_encoding [encoding system]if { [::config::getKey encoding] != "auto" } {  set_encoding [::config::getKey encoding]}cmsn_draw_mainbind all <KeyPress> "set idletime 0"idleCheckdegt_protocol_windegt_ns_command_win#after 500 proc_ns#after 750 proc_sbif {$version != [::config::getGlobalKey last_client_version]} {   ::amsn::aboutWindow   catch {file delete [file join $HOME2 bugreport.amsn]}   #Force to change to Lucida Grande 12 on OS X, just one time when we switch version   if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} {	   ::config::setGlobalKey basefont [list {Lucida Grande} 12 normal]	}}update idletasksif { [::config::getKey autoconnect] == 1 } {  ::MSN::connect}if { [::config::getKey autocheckver] == 1 } {    set new [::autoupdate::check_version_silent]}init_dockif {[::config::getKey startontray]} {	if {[::config::getKey dock]!=0} {		wm state . withdraw		set ishidden 1	} else {		wm state . iconic	}} else {	wm state . normal}vwait events

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -