亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? skins.tcl

?? Linux下的MSN聊天程序源碼
?? TCL
?? 第 1 頁 / 共 3 頁
字號:
##########################################################################             skins.tcl - aMSN Skins System (0.95B)                  ####  ----------------------------------------------------------------  ####   If you want to add any option to skins system, please, be sure   ####    of commenting out your code and keep your values in a proper    ####      section of settings.xml, so the system remains coherent       ##########################################################################namespace eval ::skin {	variable preview_skin_change 0	################################################################	# ::skin::getKey (key, [default])	# This procedure get the value of a skin's configuration key	# supplied by $key and returns it. If the given key doesn't	# exists, it will return $default if supplied, or "" if not.	# Arguments:	#  - key => The requested skin's configurarion key.	#  - default => [NOT REQUIRED] the fallback value.	proc getKey {key {default ""}} {		if { [info exists ::skin_setting($key)] } {			return [::set ::skin_setting($key)]		} else {			return $default		}	}	################################################################	# ::skin::setKey (key, value)	# This procedure assigns a value (supplied by $value) to a 	# skin's configuration key supplied by $key. It returns nothing.	# Arguments:	#  - key => The name of the skin's configurarion key.	#  - value => The data assigned to $key	proc setKey {key value} {		::set ::skin_setting($key) $value	}	################################################################	# ::skin::InitSkinDefaults ()	# Here we set every data wich depends on skins to default, so we	# can load a skin without problems.	proc InitSkinDefaults { } {		global emoticon_number emotions emotions_names emotions_data		set emoticon_number 0		set emotions_names [list]		if { [info exists emotions] } {unset emotions}		if { [info exists emotions_data] } {unset emotions_data}		::skin::setKey bigstate_xpad 0		::skin::setKey bigstate_ypad 3				::skin::setKey mystatus_xpad 5		::skin::setKey mystatus_ypad 0				::skin::setKey mailbox_xpad 5		::skin::setKey mailbox_ypad 0				::skin::setKey contract_xpad 5		::skin::setKey contract_ypad 0				::skin::setKey expand_xpad 5		::skin::setKey expand_ypad 0			}	################################################################	# ::skin::setPixmap (pixmap_name, pixmap_file [, location])	# This procedure sets the image name -- file name association 	# in order to load pictures on demand.	# Arguments:	#  - pixmap_name => Name of the image resource to be used in amsn	#  - pixmap_file => The image file	#  - location => [NOT REQUIRED, defaults to pixmaps]	#                Which folder in skins the file is under (eg pixmaps or smileys)	#  - fblocation => [NOT REQUIRED] Directory to check if file not found in the skins (for plugins)	proc setPixmap {pixmap_name pixmap_file {location pixmaps} {fblocation ""}} {		variable ${location}_names		variable ${location}_fblocation		set ${location}_names($pixmap_name) $pixmap_file		set ${location}_fblocation($pixmap_name) $fblocation	}	################################################################	# ::skin::loadPixmap (pixmap_name [, location])	# Checks if the image was previously loaded, or we need to load	# it. This way, the pixmaps will be loaded first time they're 	# used, on demand. It returns the image resource to be used.	# Arguments:	#  - pixmap_name => Name of the image resource to be used in amsn	#  - location => [NOT REQUIRED, defaults to pixmaps]	#                Which folder in the skins folder the file is under (eg pixmaps or smileys)	proc loadPixmap {pixmap_name {location pixmaps}} {		# Check if pixmap is already loaded		variable loaded_${location}		if { [info exists loaded_${location}($pixmap_name)] } {			return [set loaded_${location}($pixmap_name)]		}		# Not loaded, so let's load it		variable ${location}_names		variable ${location}_fblocation		if { ! [info exists ${location}_names($pixmap_name) ] } {			return ""		}		#for better image naming convention		switch "$location" {				smileys {					set naming "emoticonStd_std"				}				pixmaps {					set naming "uiElement_std"				}				default {					set naming $location				}		}		#If the loading pixmap is corrupted (like someone stupid trying to change the smileys by himself and is doing something bad), just show a null picture		if { [catch {set loaded_${location}($pixmap_name) [image create photo ${naming}_${pixmap_name} -file [::skin::GetSkinFile ${location} [set ${location}_names($pixmap_name)] \			"" [set ${location}_fblocation($pixmap_name)]] -format cximage] } res ] } {		 	status_log "Error while loading pixmap $res"		 	set loaded_${location}($pixmap_name) [image create photo ${naming}_${pixmap_name} -file [::skin::GetSkinFile pixmaps null \			 -format cximage]]		 }			return [set loaded_${location}($pixmap_name)]	}	################################################################	# ::skin::getNoDisplayPicture ([skin_name])	# Checks if the image was previously loaded, or we need to load	# it. This way, the displaypicture_std_none will be loaded first time it's used.	# It always returns 'displaypicture_std_none', is always the same name (static).	# Arguments:	#  - skin_name => [NOT REQUIRED] Overrides the current skin.	proc getNoDisplayPicture { {skin_name ""} } {		variable loaded_images		if { [info exists loaded_images(displaypicture_std_none)] } {			return displaypicture_std_none		}		image create photo displaypicture_std_none -file [::skin::GetSkinFile displaypic nopic.gif $skin_name] -format cximage		set loaded_images(displaypicture_std_none) 1		return displaypicture_std_none	}	proc getDisplayPicture { email {force 0}} {		global HOME						set picName displaypicture_std_$email				if {[catch {image width $picName}] == 0  && $force == 0} {			return $picName		}		set filename [::abook::getContactData $email displaypicfile ""]		set file "[file join $HOME displaypic cache ${filename}].png"		if { $filename != "" && [file readable "[file join $HOME displaypic cache ${filename}].png"] } {			catch {image create photo $picName -file "$file" -format cximage}		} else {			# We do like that to have a better update of the image when switching from no pic to another			#image create photo $picName -file [::skin::GetSkinFile displaypic nopic.gif] -format cximage			image create photo $picName			$picName copy [::skin::getNoDisplayPicture]			set file [::skin::GetSkinFile displaypic nopic.gif]		}				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 { [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] && ![::picture::IsAnimated $file] && $cursize != "96x96"} {			::picture::Resize $picName 96 96		}		if { [catch {image height displaypicture_tny_$email} height] == 0} {			#Little DP exists so we have to update it			::skin::getLittleDisplayPicture $email $height 1		}		return $picName	}	proc getLittleDisplayPicture { email height {force 0}} {		global HOME		set picName displaypicture_tny_$email				if {[catch {image width $picName}] == 0  && $force == 0} {			return $picName		}		set filename [::abook::getContactData $email displaypicfile ""]		set file "[file join $HOME displaypic cache ${filename}].png"		if { $filename != "" && [file readable $file] } {			catch {image create photo $picName -file "$file" -format cximage}		} else {			image create photo $picName			$picName copy [::skin::getNoDisplayPicture]			set file [::skin::GetSkinFile displaypic nopic.gif]		}				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 { [catch {::picture::GetPictureSize $file} cursize] } {			status_log "Error opening $file: $cursize\n"			return ""		}		set animated [::picture::IsAnimated $file]		if { $animated == 0 } {			::picture::ResizeWithRatio $picName $height $height			return $picName		} else {			set tmpPic [imageTemp]  ;#gets destroyed			$tmpPic copy $picName			image delete $picName			image create photo $picName			$picName copy $tmpPic			image delete $tmpPic			::picture::ResizeWithRatio $picName $height $height			return $picName		}		return ""	}	#Convert a display picture from a user to another size	proc ConvertDPSize {user width height} {		if {[catch {			::picture::Resize [getDisplayPicture $user] $width $height		} res]} {			msg_box $res		}	}	################################################################	# ::skin::getColorBar ([skin_name])	# Creates the special image that is placed below of the nickname	# in the contacts' list. It returns the image resource.	# Arguments:	#  - skin_name => [NOT REQUIRED] Overrides the current skin.	proc getColorBar { {skin_name ""} } {		# Get the contact list width		global pgBuddyTop		global pgbuddy_colorbar_width		set win_width [winfo width [winfo parent $pgBuddyTop]]		# Avoid deleting/recreating the colorbar every CL refresh!		if { [info exists pgbuddy_colorbar_width] && $pgbuddy_colorbar_width == $win_width } {			return uiDynamicElement_mainbar		}		set width $win_width		# Delete old uiDynamicElement_mainbar, and load colorbar		# The colorbar will be loaded as follows:		# [first 10 px][11th px repeating to fill][the rest of the colorbar]		catch {image delete uiDynamicElement_mainbar}		set barheight [image height [loadPixmap colorbar]]		set barwidth [image width [loadPixmap colorbar]]		set barendwidth [expr {$barwidth - 11}]		if { $width < $barwidth } {			set width $barwidth		}		set barendstart [expr {$width - $barendwidth}]		# Create the color bar copying from the pixmap		image create photo uiDynamicElement_mainbar -width $width -height $barheight		uiDynamicElement_mainbar blank		uiDynamicElement_mainbar copy [loadPixmap colorbar] -from 0 0 10 $barheight		uiDynamicElement_mainbar copy [loadPixmap colorbar] -from 10 0 11 $barheight -to 10 0 $barendstart $barheight		uiDynamicElement_mainbar copy [loadPixmap colorbar] -from [expr {$barwidth - $barendwidth}] 0 $barwidth $barheight -to $barendstart 0 $width $barheight		set pgbuddy_colorbar_width $win_width		set ::skin::loaded_images(colorbar) 1		return uiDynamicElement_mainbar	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷av一区二区三区软件| 久久久夜色精品亚洲| 99久久er热在这里只有精品66| 国内久久精品视频| 狠狠色丁香婷婷综合| 国内精品写真在线观看| 国产在线视频不卡二| 国产精品一区二区在线观看不卡 | 在线观看一区日韩| 91高清在线观看| 在线观看亚洲精品| 欧美亚洲动漫制服丝袜| 欧美日韩高清一区二区不卡| 欧美精品第1页| 91精品一区二区三区在线观看| 日韩一区二区三区av| 日韩区在线观看| 久久综合久色欧美综合狠狠| 久久久精品国产99久久精品芒果 | 美腿丝袜亚洲三区| 国内国产精品久久| 成人免费黄色大片| 色老综合老女人久久久| 欧美日韩在线不卡| 精品伦理精品一区| 国产精品动漫网站| 亚洲午夜精品久久久久久久久| 石原莉奈一区二区三区在线观看| 日本美女一区二区三区| 韩国毛片一区二区三区| 成人精品免费看| 99久久亚洲一区二区三区青草| 欧美揉bbbbb揉bbbbb| 欧美大白屁股肥臀xxxxxx| 久久久久久一级片| 亚洲精品视频一区| 蜜臀91精品一区二区三区| 国产麻豆精品一区二区| 97国产一区二区| 欧美一区二区三区免费| 国产日韩欧美在线一区| 一区二区三区四区在线播放| 久久99国内精品| 99久久伊人久久99| 欧美日韩免费在线视频| 欧美精品一区二区高清在线观看| 国产精品久久久久永久免费观看 | 国产精品国产三级国产aⅴ中文| 亚洲最快最全在线视频| 久久99久久久久| 99久久亚洲一区二区三区青草| 欧美疯狂性受xxxxx喷水图片| 国产欧美一区二区精品婷婷| 夜夜精品视频一区二区| 国产在线精品视频| 在线观看欧美黄色| 久久午夜羞羞影院免费观看| 亚洲乱码精品一二三四区日韩在线| 免费不卡在线观看| aaa欧美大片| 精品少妇一区二区三区日产乱码 | 日韩电影在线观看一区| 高清av一区二区| 欧美另类久久久品| 国产精品美女久久久久aⅴ| 麻豆精品在线播放| 欧美综合天天夜夜久久| 久久久国产一区二区三区四区小说| 亚洲国产一区二区三区| 国产精品456| 91精品国产综合久久久久久漫画| 亚洲人成精品久久久久久| 久草在线在线精品观看| 欧美视频一区二| 亚洲人成小说网站色在线| 国产电影精品久久禁18| 欧美一区二区美女| 亚洲一区二区三区在线| 成人av先锋影音| 久久免费电影网| 久久国产精品一区二区| 欧美性淫爽ww久久久久无| 日韩毛片一二三区| 成人激情综合网站| 国产欧美中文在线| 精品午夜一区二区三区在线观看| 欧美日韩国产精品成人| 亚洲综合视频在线| 色香蕉久久蜜桃| 亚洲色欲色欲www在线观看| 成人精品小蝌蚪| 国产色婷婷亚洲99精品小说| 激情丁香综合五月| 精品国产成人在线影院 | 久久99久久99| 欧美一区二区视频在线观看2020 | 99久久国产免费看| 日本一区二区三区高清不卡 | 欧美剧在线免费观看网站| 亚洲精品免费在线播放| 97久久久精品综合88久久| 国产精品久久久久天堂| 国产成人精品一区二区三区四区| 精品国产乱码91久久久久久网站| 久久精品国产久精国产| 欧美一三区三区四区免费在线看| 香蕉久久夜色精品国产使用方法| 欧美专区在线观看一区| 一区二区三区在线视频免费| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲色图清纯唯美| 色综合久久久久综合| 一区二区三区在线视频免费| 欧美在线色视频| 丝袜美腿亚洲一区| 欧美色窝79yyyycom| 亚洲成人激情av| 日韩视频在线观看一区二区| 美女视频免费一区| 久久亚洲一区二区三区明星换脸 | 日韩午夜在线影院| 麻豆视频一区二区| 精品国产乱码久久久久久老虎| 国产精品影视天天线| 国产精品久久久久国产精品日日| 色综合久久久久网| 日韩国产精品久久| 精品美女在线播放| eeuss鲁片一区二区三区| 综合久久久久久久| 欧美日韩免费高清一区色橹橹| 日韩成人一级大片| 久久久99精品免费观看不卡| gogo大胆日本视频一区| 一区二区三区美女视频| 欧美一级xxx| 国产.欧美.日韩| 亚洲一区二区三区四区在线免费观看 | 国产精品资源在线看| 国产精品丝袜91| 欧美日韩激情在线| 国产综合色视频| 亚洲色图清纯唯美| 欧美日韩一区二区三区在线看| 久久精品国产99| 《视频一区视频二区| 欧美精品日日鲁夜夜添| 国产精品影视天天线| 亚洲在线免费播放| 久久日韩精品一区二区五区| 91网上在线视频| 久久精品国产在热久久| 亚洲欧美色一区| 久久综合狠狠综合| 色狠狠一区二区三区香蕉| 久久精品免费观看| 亚洲精品视频一区| 26uuu国产一区二区三区| 色婷婷av久久久久久久| 免费观看久久久4p| 一区二区三区视频在线看| 久久综合狠狠综合久久激情| 欧美在线高清视频| 国产精品996| 日韩精品久久久久久| 日本一二三不卡| 日韩精品一区二区三区四区视频| 99re视频精品| 国产真实精品久久二三区| 亚洲444eee在线观看| 国产精品色哟哟网站| 日韩视频国产视频| 在线观看日韩国产| a美女胸又www黄视频久久| 国内精品免费**视频| 日韩中文字幕一区二区三区| 成人免费一区二区三区视频 | 欧美精品一区二区三区高清aⅴ | 国产精品国产三级国产普通话三级| 欧美一区二区成人| 欧美视频在线观看一区| 99视频精品全部免费在线| 国产精品99精品久久免费| 蜜乳av一区二区三区| 亚洲超碰97人人做人人爱| 国产精品久99| 国产午夜久久久久| 精品精品欲导航| 6080午夜不卡| 精品视频999| 欧美中文一区二区三区| 色婷婷av一区二区三区软件| 99视频国产精品| 成人精品国产一区二区4080| 国产成人精品网址| 国产九色精品成人porny| 国产一区二区三区国产| 久久精品国产在热久久| 蜜臀a∨国产成人精品| 日本aⅴ免费视频一区二区三区|