再有谁存念我生平的梗概 - Chyng's blog
Panels UI - Commands 中文版
尘飏 发表于 2008-08-22 12:13:57
Foobar2000:Components 0.9/Panels UI (foo ui panels)/Commands
(翻译:Chyng)
这一节的函数允许以不同方法指定一种颜色,但每个函数都以BGR十六进制格式返回其值。
使用RGB格式指定返回的颜色,其中,r、g和b指颜色的红、绿和蓝组成部分。
参阅$c()
使用HSL格式指定返回的颜色,其中,h、s和l指颜色的色调、饱和度和亮度组成部分。
使用RGB十六进制格式指定返回的颜色,其中,c是一个6位的RGB十六进制值。
返回一个由n%的颜色a加上(100-n)%的颜色b组成的新颜色。
返回元素n的当前系统颜色,其中,n是一个在0到30间的整数值。参阅MSDN技术资源库以获取对每个值的描述。
1.2对齐函数
重置对齐。因为相对于$alignabs一切都是对齐的,所以,要摆脱以往的$alignabs声明,一个空的$alignabs()函数是必须的。
调整对齐以使x被添加到左边缘,而且x是被从对齐矩形的右边缘减去的。y是被添加到上边缘的,而且y是被从对齐矩形的下边缘减去的。
parameters
x
边界对齐矩形的X轴坐标;这个整数值x被添加到边界对齐矩形的左边缘,并被从边界对齐矩形的右边缘减去。
y
边界对齐矩形的y轴坐标;这个整数值y被添加到边界对齐矩形的上边缘,并被从边界对齐矩形的下边缘减去。
notes
写$alignabs(0,0)和$alignabs()是一样的,都将由此重置对齐。
1.2.3 $alignabs(x,y,w,h[,h-align,v-align])
设置一个边界对齐矩形。
parameters
x
边界矩形的左上角X轴坐标
y
边界矩形的左上角Y轴坐标
w
边界矩形的宽度
h
边界矩形的高度
h-align
默认的水平对齐,由下列属性之一来指定:
left
center
right
v-align
垂直对齐,由下列属性之一来指定:
top
middle
bottom
1.2.4 $align(position[,position])
在一条线内对齐文本。
parameters
position
position可以是下列属性之一:
right
center
left
top
middle
bottom
设置当前行占有的高度,其中,n是一个整数值。
包装文字,以使其同一行放不下时进入下一行而非添加省略号。$char(10)会使$wordwrap()无效。
以n像素缩进文本,其中,n是一个正整数值。
返回当前对齐矩形的宽度
返回当前对齐矩形的高度
1.3字体函数
这些函数设置字体的属性和外观。
1.3.1 $font(name,size[,options])
指定一种字体的属性。包括字型、字号和字体样式。
parameters
name
字体的名字
size
以像素为单位的字体的大小
options
options可以是下列属性的任意组合:
bold
thin
italic
strikeout
underline
nocleartype
禁用ClearType的渲染
textalpha,n
effectcolor,c
alpha,n
offset,n
glow,n
radius,n
iterations,n
notes
使用Panels UI配置窗口里的效果对话框,options参数能被应用文本“效果”属性。一个内建的预览允许容易地调整这些属性。
example
$font(Calibri,20,bold,textalpha,100)
see also
$fontexists()
使每个字符的宽度增加n像素,其中,n是一个正的或负的整数值。简而言之,$addcharspace()以n像素增加或减少每个字符间的空白。
为每个字符设置一个不变的“固定”间距,其中,n是一个以像素为单位的正数或整数值。简而言之,每个字符都会有n像素的等宽间距。
设定文本的颜色,其中,c可以是一个BGR十六进制颜色值(从一种颜色函数返回)或一个格式为r,g,b的RGB颜色值。
examples
例1、使用一个颜色函数设置颜色为红。
$textcolor($hexcolor(FF0000))
例2、直接输入一个RGB颜色值设置颜色为红。
$textcolor(255,0,0)
1.3.5 $smallcaps(large font,small font,text)
以小体大写字母的形式返回text。text里的大写字母以large font返回,而小写字母以small font返回。large font和small font使用字体函数定义,例如$font()、$textcolor(),等等。
example
指定的短语将以小体大写字母的形式返回。large font是Calibri,20和蓝色(255,0,0)。small font是Calibri,15和红色(0,0255)。
// In this example a $textcolor() is specified but it is not required;
// it would otherwise inherit the last defined $textcolor() function.
$smallcaps(
$font(Calibri,20)$textcolor(255,0,0),
$font(Calibri,15)$textcolor(0,0,255),
This text will be output using small-caps.
)
1.4.1 $imageabs(x,y,filename[,options])
显示一个以下被支持格式的图像:PNG、BMP、GIF、JPEG和ICO。
parameters
x
左上角位置的X轴坐标
y
左上角位置的Y轴坐标
filename
以绝对或相对路径表示的图像文件名。要使用相对路径,需将正斜杠“/”作为第一个字符。
例如:/MyLayout\images\example.jpg
options
options可以是下列属性的任意组合:
alpha,n
图像的不透明度,其中,整数值n可以介于0(完全透明)到255(完全不透明)间。没有明确声明alphan,n属性,图像就是完全不透明的。
clip,x,y,w,h
依据给定的参数修剪图像:
x
图像将被修剪到的左上角位置的X轴坐标
y
图像将被修剪到的左上角位置的Y轴坐标
w
图像的修剪宽度
h
图像的修剪高度
nokeepaspect
重设尺寸时忽略高宽比率。
resize,w,h
使用w参数和h参数指定的高宽比例重设图像的尺寸,其中,w和h是以像素为单位的宽度和高度。要重设尺寸的图像大于其原始尺寸时,nokeepaspect属性必须指定。
rotateflip,n
表1、rotateflip值
|
n |
描述 |
|
1 |
顺时针旋转90度 |
|
2 |
顺时针旋转180度 |
|
3 |
顺时针旋转270度 |
|
4 |
水平翻转 |
|
5 |
顺时针旋转90度并水平翻转 |
|
6 |
垂直翻转 |
|
7 |
顺时针旋转90度并垂直翻转 |
表2、用乘法表格式表示的ratateflip值
|
× |
Flip Horizontal |
Flip Vertical |
Flip Horizontal+Vertical |
None |
|
Rotate 90° CW |
5 |
7 |
3 |
1 |
|
Rotate 180° CW |
6 |
4 |
0 |
2 |
|
Rotate 270° CW |
7 |
5 |
1 |
3 |
|
None |
4 |
6 |
2 |
0 |
example
在位于0,0的x,y位置显示一个图像,重设尺寸为50 x 50像素,并忽略高宽比,不透明度设为150。
$imageabs(0,0,
/images\example.jpg,
resize,50,50,
nokeepaspect,
alpha,150
)
1.4.2 $rectabs(x,y,w,h[,brush color,pen color,options])
绘制一个矩形。
parameters
x
左上角位置的X轴坐标
y
左上角位置的Y轴坐标
w
矩形的宽度
h
矩形的高度
brush color
用于填充矩形的颜色,使用一种颜色函数定义。null属性使brush color以无颜色定义。
pen color
边沿颜色,使用一种颜色函数定义。null属性使pen color以无颜色定义。
options
options可以包括下列属性的任意组合:
alpha,n
矩形的不透明度,其中,整数值n可以介于0(完全透明)到255(完全不透明)间。没有明确声明alphan,n属性,矩形就是完全不透明的。
glow,n
radius,n
iterations,n
notes
当使用高级的选项如alpha,n时,矩形将被使用pen color填充,而非brush color。然而,如果brush color被定义为null,仅有的一个边沿将被照常画出。
example
在位于5,5的x,y位置,使用75像素乘75像素的宽度和高度创建一个矩形。该矩形是红色的($c(255,0,0)),pen color(边沿)被使用null忽略。
$rectabs(0,5,
75,75,
$c(255,0,0),
null
)
持续性的变量(简称为PVARS)是在foobar2000会话中永久地保持其值的变量。这些变量可以在整个Panels UI的任何地方(Panels UI本身、Track Display、单栏播放列表和媒体库过滤器)被操作。
|
代码 |
输出 |
$getpvar(foo,bar)
$setpvar(foo,bar)
$getpvar(foo)
$getpvar(Foo)
$setpvar(foo,2000)
$getpvar(foo)
|
[unknown pvar]
bar
bar
2000
|
重要提示:PVARS无法使用foobar2000核心的变量操作方式来访问,例如$put()、$puts()和$get()。
返回最后存储在名为name的PVAR中的值。如果该变量是未定义的,将返回字符串[unknown pvar]。
example
检索一个PVAR里的值以设立三种可能的情况。
$select($getpvar(display),
Scenario one
,
Scenario two
,
Scenario three
)
在名为name的变量里存储永久的值,无返回值。
example
在一个名为display的PVAR里存储值2。
$setpvar(display,2)
返回字符串s的以像素为单位的高度。
返回字符串s的以像素为单位的宽度。
求一个数学表达式的值并返回该值。如果以一个非整数的值作为操作数,该非整数值会被转换为0。返回值-1指示一个错误。
parameters
expression
expression可以包括正整数值的操作数和下列任何一种数学运算符:
|
运算符 |
描述 |
|
+ |
加 |
|
- |
减 |
|
* |
乘 |
|
/ |
除 |
|
@ |
求余(返回除后的余数) |
|
{ } |
集体性质的表达式(波形括号充当括弧) |
example
$eval(
{%_width%/3}+$get(myVariable)
)
如果file存在返回true,否则返回false。
example
下面的例子判断音乐文件夹中是否存在folder.*:
$if($fileexists($replace(%path%,%filename_ext%,folder.*)),
// True
The file exists
,
// False
The file does not exist
)
如果名为name的字体存在就返回true,否则返回false。
跳过对0.14.10版本前的废弃的函数和语法的处理,以充分利用较新的函数和语法。简而言之,废弃的函数将不会被识别。
notes
该函数必须在// Global重绘区里使用。
返回以像素为单位的当前面板高度。
1.7.3 %foobar_path%
返回foobar2000安装目录的完整路径名。
如果支持$glass()函数就返回true,否则返回false。
替代$playlistname()。返回当前播放列表的名字。本作%playlistname%。
返回当前的Sort/Group预置或规范集的名字。
1.7.7 %sortgroup_preset_count%
返回Sort/Group预置的总数。
2音轨显示特有
这些titleformat函数是Track Display面板所独有的,Track Display是主要的Panels UI面板。
重绘类型允许titleformat脚本被更高效地处理,方式是依照不同的刷新率需要将titleformatting代码分别放在不同的区域。重绘类型声明是大小写和语法敏感的,且每个面板只能声明一次。
// Global重绘类型区内最好声明全局值。
// Background重绘类型区内最适合放只绘制一次的代码,例如图像。
2.1.3 // PerTrack
// PerTrack重绘类型区内适合放每音轨改变的值,例如%album%、%artist%和任何按钮函数。
2.1.4 // PerSecond
// PerSecond重绘类型区声明适合放需要每秒更新的值,例如%playback_time%。
example
// Global
$if($meta_test(album artist),
$puts(album_is_va,1)
)
$puts(fontStyle,Calibri,20,bold)
// Background
$imageabs(0,0,/images\background.png)
// PerTrack
Current song information: %artist% - %title%
$imagebutton(20,20,
/images\play.png,
/images\play_hover.png,
'Play or Pause')
// PerSecond
$font($get(fontStyle))
%playback_time%
按钮是交互式的矩形焦点,能被用来服务于各种功能。包括变量操作、按钮特有的命令的执行,以及包括masstagger脚本、meattag值、主菜单命令等等在内的各种foobar2000操作的执行和处理。按钮必须在// PerTrack重绘类型区里使用。
2.2.1 $imagebutton(x,y,image,hover image,command[,options])
创建一个基于图像的按钮。
parameters
x
左上角的X轴坐标
y
左上角的Y轴坐标
image
按钮在未激活状态时被显示的图像的绝对或相对路径。
hover image
按钮在激活状态时被显示的图像的绝对或相对路径。简而言之,该图像在鼠标指针悬停在按钮上时被显示。
command
具体指定按钮被按下时执行的操作。command可以包括下列之一:
foobar2000命令组中的一个主菜单项或上下文菜单项。例如,播放或暂停、参数设置、删除重复等。这些项目的准确列表可以在Panels UI配置窗口中点击Main和Context按钮,再通过下拉列表找到。
EXEC
执行命令。
例如“EXEC:'http://www.google.com/search?q='$replace(%artist%, ,+)”将打开一个Web浏览器窗口并定位到指定的URL。
FILTER:name|value:name2|value2: ...
为播放列表显示一个过滤用的上下文菜单。
在value域使用!source!,将显示一个可以切换播放列表的子菜单。
MENU
显示foobar2000主菜单的一个上下文菜单。
PLAYLISTS-MENU
在一个上下文菜单里显示所有播放列表的一个列表。
POPUP:name
打开一个新的Panels UI窗口,其中,name是一个PUI文件的名字。如果没有该PUI文件存在,将在本布局的Panels UI文件夹里创建一个以指定的name命名的文件。
PVAR:SET:name:value
设置一个持久性的变量。其中,name是该变量的名字,value是该变量的值。
SORT:name|value:name|value + $filtered(name) + $sorted(name): ...
为播放列表显示一个排序上下文菜单。
SORTGROUP-PRESETS-MENU
显示一个Sort/Group预置上下文菜单。
TAG:operation:tag:value
操作一个标签元数据。
operation
operation指出如何操作tag和value。它必须是下列之一:
SET
用指定的value创建或修改tag。这个SET属性应使用在大多数情况下。
空的value将删除tag。例如“TAG:SET:rating:”将删除rating标签。
ADD
只以指定的value创建tag。不改变已存在的标签。
REMOVE
只移除tag,如果指定的value存在。
tag
元数据字段名(标签的名字)
value
元数据值(标签值)
WINDOWSIZE:width:height[:h-anchor:v-anchor]
使用锚点选项设定主窗口尺寸。
width
窗口的宽度
height
窗口的高度
h-anchor
水平锚点,可以是下列之一:
LEFT
RIGHT
v-anchor
垂直锚点,可以是下列之一:
TOP
BOTTOM
options
options可以包括:
tooltip,text
指定按钮的工具提示,其中,text定义工具提示。在默认情况下,如果这个可选的tooltip,text属性未指定,工具提示被以command参数的值作为text使能。一个使用空text值的工具提示属性将禁用工具提示,例如:tooltip,
hotspot,x,y,w,h
指定按钮的可点击区域的坐标。当未包括这个可选的hotspot,x,y,w,h属性时,整个按钮区域都是可点击的。
x
焦点的左上角X轴坐标
y
焦点的左上角Y轴坐标
w
以像素为单位的焦点的宽度
h
以像素为单位的焦点的高度
examples
例1、使用rating_star.png(image)和rating_star_hover.png(hover image)在位于x,y坐标5,10的地方创建一个按钮。该按钮的command设置一个名为rating的tag的值为5。工具提示被用一个空的tooltip值禁用。图像的可点击区域或称焦点的左上角位于图像的最左上角0,0,大小为25 x 25像素。
$imagebutton(5,10,
/images\rating_star.png,
/images\rating_star_hover.png,
TAG:SET:rating:5,
tooltip,,
hotspot,0,0,25,25,
)
例2、创建一个按钮图标来调整foobar2000窗口的大小为400 x 500像素。
$imagebutton(0,0,
/images\resize.png,
/images\resize_hover.png,
WINDOWSIZE:400:500:LEFT:TOP,
tooltip,'Resize window'
)
2.2.2 $textbutton(x,y,w,h,text,hover text,command[,options])
创建一个以文字为基底的按钮。$textbutton()使用和$imagebutton()相同的命令和选项参数;参见关于$imagebutton()的command和options参数的描述。
parameters
w
以像素为单位的按钮宽度
h
以像素为单位的按钮高度
text
在按钮处于未激活状态时被显示的文本。能包含字体变化、矩形,以及图像。
hover text
在按钮处于激活状态时被显示的文本。简而言之,该文本在鼠标指针悬停在按钮上时被显示。
examples
从x,y坐标0,0创建一个按钮,150 x 14像素的宽度和高度。处于非活动状态时,按钮显示文本Click for preferences。当鼠标指针悬停在该按钮上时,文字颜色更改为蓝色。当按钮被按下时,foobar2000参数设置窗口被打开。
$textbutton(0,0,
150,14,
Click for preferences,
$textcolor(0,0,255)Click for preferences,
Preferences
)
2.3.1 $glass(left,top,right,bottom)
扩展Vsta Aero Glass边框,其中,left、top、right和bottom指整型的、以像素为单位的边框值。例如,$glass(0,0,0,100)将用100像素扩展底部的Aero Glass边框。
notes
该函数只在Microsoft Windows Vsta上有效。
see also
%glass%
设置窗口标题为字符串s。
设置任务栏通知区域的托盘工具提示为字符串s。
2.3.4 $windowstyle(option[,option])
设置foobar2000窗口的特性。$windowstyle()应该被放在// Background重绘区。
parameters
option
option能包括下列标志之一:
hidetitlebar
隐藏标题栏
showtitlebar
显示标题栏
notes
目前,该option参数只有两个属性。不过,未来的版本可能增强option,以包含一个“总在最上层”属性和“重设窗口尺寸”属性。
2.4.1 $panel(id,name,x,y,width,height)
添加一个组件(被提交作为一个面板)到布局。面板能重叠另一个,例如多个Track Display面板。然而,个别的面板总是被绘制在随后的面板上。
parameters
id
用于识别面板的一个用户定义的字符串。推荐用它来描述面板,但它可以是任何含义。
name
被添加的组件的名称。
查询配置窗口里的下拉列表(激活Panels按钮)里的正确的大小写敏感的语法。只有组件的在其前缀范畴外的名称是必须的。例如“Album Art”组件的正确指定是Album Art,不是Panels / Album Art。
x
面板的左上角X轴坐标,其中,x是一个整数值。
y
面板的左上角Y轴坐标,其中,y是一个整数值。
width
以像素为单位的面板的宽度。
height
以像素为单位的面板的高度。
example
创建Peakmeter组件的一个名为MyPanel的面板。该面板显示在x,y坐标0,0,宽度为100像素,高度为500像素。
$panel(MyPanel,Peakmeter,0,0,100,500)
返回Sort/Group预置n的名字。
返回面板的当前模式,Now playing或Follow cursor。
在没有可用的音轨信息向面板提供时返回true。在Now Playing模式,这在播放停止时是true。在Follow Cursor模式,这始终是false。
这些是单栏播放列表面板独有的titleformat函数和变量。
在一个组里的所有音轨的field总计
3.1.2 $meta_sum(field)
3.1.3 %focused%
3.1.4 %selected%
4.1组信息
