Tip by Brian and Smurfier
虽然@include是个简单的工具,但是它是很强大的。他可以通过剥离较长的代码到较短的文件来减少皮肤代码长度。
重复代码被使用在多用皮肤中,可以在一个文件中管理。也可以被用来在打开的皮肤中加载不同的代码。
注意:我们将在这个主题中使用“父文件”“子文件”,当我们说“父文件”意味着是这个皮肤,当我们说“子文件”意味着是这个@inlude文件。
使用 @include
这里有几个使用@inlude的规则,第一条是@include 的使用
第二个是你引用的文件
[Variables]
SomeVariable=AValue
正在使用@inlude 的文件必须是ini格式。意味着它有适当的[sections]节点,有key=value对,这个引用使用[variables]节点的设置。
如果你想要引用更多的文件,他们需要增加序号。
@include=SomeFile.inc
@include2=SomeOtherFile.inc
@include3=YetAnotherFile.inc
...
虽然它不需要一定是inc格式,但是强烈建议使用它。这可防止rainmeter出现像皮肤的列表文件
我们也可以用一个变量定义一个@include,唯一需要注意的是变量不能为动态。
[Variables]
Theme=SomeTheme
@include=#Theme#/SomeFile.inc
理解@include
它做了什么,当RAINEMTER到达一个@inlude行,他读取了子文件,然后把它内容显示在皮肤下面
SomeFile.inc
[Background]
Meter=Image
H=30
W=40
YourSkin.inc
@include=SomeFile.inc
[Foreground]
Meter=Image
H=20
W=30
X=5r
Y=5r
这是行不通的,像预期那样,这[backgroud]meter会被后面的[foreground]meter 代替,我们可以使用一个@include规则修复它.
来自于手册
被引用的文件在@include被定义的位置是被读取的,这样这个来自于被引用文件的值与那些来自于ini文件有相同的名字,就会覆盖前几节的值,反之亦然。
如果在皮肤中我们想要放置的meter或者measure的位置,只写了节点的名字会怎样(在这个例子中是[background])。像下面这样
@include=SomeFile.inc
[Background]
[Foreground]
Meter=Image
H=20
W=30
X=5r
Y=5r
在子文件中 [Background]节点 会显示在皮肤相同的节点下,这样就解决了问题。
实际使用: Skin Settings(皮肤设置)
@include最常见的用途是允许用户改变皮肤在一个单独的文件中所使用的设置
Settings.inc
[Variables]
BackgroundImage=SomeImage.inc
HideBackground=0
Skin.ini
@include=Settings.inc
[Background]
Meter=Image
ImageName=#BackgroundImage#
Hidden=#HideBackground#
实际使用: Pages and
Stylesheets(页和样式表)
@include2个主要用途是轻松切换皮肤的不同页面还有为你的皮肤创建样式。这2种用途 实际上我们可以使用变量定义一个@include
创建不同的页面是容易的,只要把每个页面按照序列命名,然后在主皮肤中我们需要把要改变的皮肤定义成变量
[Variables]
Page=1
@include=Pages\PageNum#Page#.inc
在这个主皮肤文件中,可以用 !WriteKeyValue 命令改变页面。只需要记住在改变 page 变量之后刷新皮肤,让我们看到新的页面被加载。
!Execute [!WriteKeyValue Variables Page 2][!Refresh]
这个方可同样用于 改变样式 ,一个样式表包含了Meter Styles用来定义你皮肤的外观和感觉