图符控件
图符控件
图符控件用于显示用户自定义的字符(PS:也可以用来画字符画)。在你为图符控件预定义了字符的情况下,你可以在任何支持用户自定义字符的显示器上使用图符控件(大部分显示器都支持),当然这包括图形显示器(如:T6963)。你可以点击~硬件支持列表~来查看详细说明。
如果由于某种原因导致图符不能显示,那么将它将由星号’*’代替。
定义图符控件是一件非常简单的事:
Widget <name> { # 控件名
class 'icon' # 控件类型
speed <number> # 速度
visible <expr> # 可见性
frame <expr> # 框(显示在位图外围的框)
foreground <color> # 前景色
background <color> # 背景色
bitmap { # 位图
row1 <string> # 第一行
row2 <string> # 第二行
... # ...
row8 <string>
}
}
参数
参数 | 含义 | 说明 |
---|---|---|
speed | 速度 | 动画效果的时间间隔(单位:毫秒), 默认值: 100 毫秒, 为 0 时代表无动态效果(用于静态图符)。 |
visible | 可见性 | 其参数为表达式,用于控制控件的可见性(可用于制造闪烁效果)。 |
frame | 框 | 其参数为表达式,该表达式用于控制在位图外围显示的框的种类(在两个或者多个动态图符需要同步时会非常有用)。 |
foreground | 前景色 | 活动像素的颜色,(格式:RRGGBBAA 或 RRGGBB),默认为不透明的黑色(‘000000ff’),点击~颜色~了解更多。 |
background | 背景色 | 非活动像素的颜色,(格式:RRGGBBAA 或 RRGGBB), 默认为透明(‘ffffff00’),点击~颜色~了解更多。 |
bitmap.row* | 位图.行* | 定义位图的字符串。 |
例子
静态图符:
Widget Lightning {
class 'icon'
bitmap {
row1 '...***'
row2 '..***.'
row3 '.***..'
row4 '.****.'
row5 '..**..'
row6 '.**...'
row7 '**....'
row8 '*.....'
}
}
动态图符:
Widget Heartbeat {
class 'Icon'
speed 800
Bitmap {
Row1 '.....|.....'
Row2 '.*.*.|.*.*.'
Row3 '*****|*.*.*'
Row4 '*****|*...*'
Row5 '.***.|.*.*.'
Row6 '.***.|.*.*.'
Row7 '..*..|..*..'
Row8 '.....|.....'
}
}
无需更多的解释…
同步图符需要用到
frame
参数(你可以在附件一节中看到一个演示): ``` Widget MailIcon_left { class ‘Icon’ speed 100 update 100注意:下面的位图(bitmap)可以只写当前(current size)尺寸的一半,因为它是一个上下对称的动态图符,这里是为了给你举个例子所以才全部写了。
Bitmap { Row1 ‘…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..’ Row2 ‘…..|…..|…..|…..|…..|…..|…..|….|…|..|.|*|*|*|*|*|*|.*|..|…|….|…..|…..|…..|…..|…..|…..|…..|…..|…..’ Row3 ‘…..|…..|…..|…..|…..|…..|…..|….|….|...|...|...|...|...|...|...|...|...|...|….|….|…..|…..|…..|…..|…..|…..|…..|…..|…..’ Row4 ‘…..|…..|…..|…..|…..|…..|…..|….|….|....|...|...|...|...|...|...|...|...|....|….|….|…..|…..|…..|…..|…..|…..|…..|…..|…..’ ↑对称 Row5 ‘…..|…..|…..|…..|…..|…..|…..|….|….|....|.…|…|…|…|…|…|…|.…|....|….|….|…..|…..|…..|…..|…..|…..|…..|…..|…..’ ↓对称 Row6 ‘…..|…..|…..|…..|…..|…..|…..|….|….|....|.…|….|….|….|….|….|….|.…|....|….|….|…..|…..|…..|…..|…..|…..|…..|…..|…..’ Row7 ‘…..|…..|…..|…..|…..|…..|…..|….|…|..|.*|*|*|*|*|*|*|.*|..|…*|….|…..|…..|…..|…..|…..|…..|…..|…..|…..’ Row8 ‘…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..|…..’ }
注意:下行中第一次引用bar8是为增加/减少计数器(counter)的值,而且可见性( visibility)公式也不需要这么复杂,这里只是为你做个演示。
visible ( test::bar(8,29,0,1) > 6 & test::bar(8,29,0,0) < 21 ) * ( exec(mailcheck_script,mailcheck_refresh) > 0 ) ——-mailcheck_script在这里
选择要显示的框(frame)
frame test::bar(8,29,0,0) }
Widget MailIcon_right { class ‘Icon’ speed 100 update 100
# 这行也适用于MailIcon_left
frame test::bar(8,29,0,0)
Bitmap {
Row1 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|'
Row2 '.....|.....|....*|...**|..***|.****|*****|*****|*****|*****|*****|*****|*****|*****|*****|*****|*****|*****|*****|*****|*****|*****|.****|..***|...**|....*|.....|.....|.....|.....|'
Row3 '.....|.....|....*|...*.|..*.*|.*.*.|*.*..|.*...|*....|....*|...*.|..*.*|..*.*|..*.*|..*.*|..*.*|..*.*|...*.|....*|*....|.*...|*.*..|.*.*.|..*.*|...*.|....*|.....|.....|.....|.....|'
Row4 '.....|.....|....*|...*.|..*..|.*...|*..*.|..*..|.*...|*..*.|..*..|.*..*|.*..*|.*..*|.*..*|.*..*|.*..*|..*..|*..*.|.*...|..*..|*..*.|.*...|..*..|...*.|....*|.....|.....|.....|.....|'
Row5 '.....|.....|....*|...*.|..*..|.*...|*...*|...**|..**.|.**..|**...|*...*|*...*|*...*|*...*|*...*|*...*|**...|.**..|..**.|...**|*...*|.*...|..*..|...*.|....*|.....|.....|.....|.....|'
Row6 '.....|.....|....*|...*.|..*..|.*...|*....|.....|.....|.....|.....|....*|....*|....*|....*|....*|....*|.....|.....|.....|.....|*....|.*...|..*..|...*.|....*|.....|.....|.....|.....|'
Row7 '.....|.....|....*|...**|..***|.****|*****|*****|*****|*****|*****|*****|*****|*****|*****|*****|*****|*****|*****|*****|*****|*****|.****|..***|...**|....*|.....|.....|.....|.....|'
Row8 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|'
}
#名为bar8的计数器(counter)已经通过MailIcon_left增加了
visible ( test::bar(8,29,0,0) > 1 & test::bar(8,29,0,0) < 26 ) * ( exec(mailcheck_script,mailcheck_refresh) > 0 ) -----mailcheck_script在这里
frame test::bar(8,29,0,0)
}
*mailcheck_script* 这个脚本里面可能有这样一些内容:
!/usr/bin/php
<?php $mbox = imap_open(“{localhost/tls/novalidate-cert}”, “username”, “password”, OP_HALFOPEN) or die(“can’t connect: “ . imap_last_error());
$status = imap_status($mbox, “{localhost}Inbox”, SA_UNSEEN); if ($status) { echo $status->unseen; } else { echo “0”; } imap_close($mbox); ?> ```
可见性
你可以为 visible
指定一个表达式,它将控制(每个速度毫秒内)图符的刷新(即控制图符在刷新时显示与否)。如果这个这个表达式的值为0,那么图符将不可见,(图符的内容)将由空白代替。如果表达式的值不为0的话,图符将会显示。这对于制造闪烁效果和动态显示来说非常有用。
附件下载
- layers_and_frame.avi (28.5 KB) - 动态邮件图符的演示