手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

[转帖]X Window 系统使用指南--15

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

料库,每一个resource规格以一个应用程式的某些特徵命名,且设定一个值给
这个特徵当预设值,也就是说,一个规格 (spec) 的形式为:

characteristic : value (特徵:值)

当应用程式开始执行时,他会先询问资料库是否有任何特徵符合自己所要
的设定,或使用相关的值,例如:

xclock*foreground:blue

意为将值blue设定给特徵xclock*foreground 。用以决定一个程式的需求
是否符合在资料库中之规格的系统部份,被称作Resource管理器。

Resource预设值能被应用到一个应用程式中的物件(通常是widget),就
如同设计整个程式一般,(例如您能够对一个特定的子视窗在某一个命令按钮
的背景色设定预设值,而不是只能针对任何应用程式的视窗背景)。为了能达
到这一点,我们需要一些严谨的命名方法,以设定物件应用预设值。


15.3.1 指定一个Resource预定应用到何处

Resource管理器根据特徵值(characteristic)决定一个预设规格是否能应
用在特别的情况,我们可将特徵值分为三个部份。

1. 您用以设定预设值的程式属性,例如:背景色、字型等。

您必需指定属性 (attribute) -- 意即您设定什麽值给他。给定一个
resource的规格 而不说明他的值是无意义的。

注意:在X的文献和手册中,属性通常被称为”resource”或
”resource name”,”Resource”也通常被用来当作我们称为特徵值。

特徵值的其他两个部份指定预设值在何处使用。例如只在特定的程式
使用或在特定型态的物件,或两者均是。

2. 应用到这个规格的应用程式的名称,假如您省略他,规格将应用到
任何的应用程式。

3. 一连串的限定(restrictions)条件:当物件符合限定条件时,才会产
生指定的应用。限定通常为widget的名称,您能够指定从零开始任何
数目的限定。例如:

xclock*foreground:blue
xedit*row1*Command*Cursor:Cntr_ptr

第一个例子没有任何限定,第二个例子有两个限定(row1 和Command)

三个部份依序排列

[<program name>] [<restrictions>] <attribute>

并以特别的分隔符号分开,我们将於稍後说明分隔符号的细节,但我
们先看一些特徵值的□例(为了简单起见,我们在□例中只用到颜色
属性)。


一些说明Resource规格的□例

.指定在任何地方中的前景色预设值为黄色。

*foreground:yellow

我们未指定任何应用程式的名称,所以此规格可应用到任何的应用程式;
我们也未指定任何限制,所以对一个应用程式在任何地方都适用。("*" 这个
符号就是我们方才提及的特别分隔号的一种)

.指定只有在xclock应用程式中的前景色预设值为粉红色。

xclock*foreground:pink

这个规格仅能在xclock适用,但是只要项目中的属性叫做
”foreground”的均适用。

.现在,针对一个特定应用程式的特定地方:

xman*topBox*foreground:blue

这个规格仅能在xman适用,而且只能在xman主选项选单中名为topBox的
物件适用。(应该适用於xman中任何叫topBox的物件,但实际上只有一个
topBox物件)

.在第二个□例(粉红色)中我们包含了应用程式名称,但忽略了任何限
制,现在我们反过来:

*command*foreground:green

也就是说,我们指定在任何应用程式中物件名称为command 的前景色预
设值为绿色。


15.3.2 用类别名称一般化规格说明

前述的例子说明了我们对预设值结构所需的大部份功能,但他们有一个限
制:您必须知道应用程式设计师设计在每一个应用程式中的widget名称,这
些资讯有时包含在程式的指南页中的一部份,但通常被省略。

无论如何,Resource管理器有一个尽量减低这个问题的方式:当您在特徵
中不论何处用到一个应用程式名称、限制或属性名称,您均可类别名称(class
name)来代替他。

应用程式类别名称(Application class name):描述程式的型态,例如
xterm 能够是Term Emul (终端机模拟器)的类别,xedit 和emacs
是Editor(编辑器)的类别。(但假如xterm 是xterm 的类别,xedit
是xedit 的类别则失去意义。)

限定类别名称 (Restriction class name):限定几乎是一定不变的widget
名称,所以在此地您能够用widget类别名称。

属性类别名称 (Attribute class name) :属性是如同widget一般的一个
型态或类别的成员(instance)。

传统上,任何的类别名称以一个大写的字母开头,其後则为小写字母,例
如属性”foreground”是属於”Foreground”类别,我们将简单的解释您如何
去发现您需要用来指定项目的类别名称。首先,我们将看一些更多的□例,这
次用到了类别或一个混合了类别和成员的□例。


含有类别名称的Resource规格说明□例

这些□例展示出您如何在Resource规格中使用类别,而较前述以更一般性
的方式设定预设值,他们也解释了您如何能使用一个类别来设定一个预设值给
较大□围的情况,和将类别和成员结合起来以拒绝预设值在某些特别情况下设
定。

.指定在任何地方前景色的预设值为黄色

*Foreground:yellow

这个□例和先前□例的区别在於我们是对Foreground类别指定预设值。这
个区别之所以重要,是因为并非任何在类别Foreground的属性,他的成员名称
都是叫foreground。例如,xclock的指针的颜色可由类别Foreground的属性来
决定,但他的成员名称不叫foreground而叫hand。

.我们能够用这种结构来帮助我们在文档不清楚的情况下,藉著以强烈对
比的组合设定预设值来分辨物件的类别:

xmh*Command*Foreground:khaki (土黄色)
xmh*Command*Background:maroon (粟色)

如此将使任何的命令widget(command widget)呈现醒目而美丽的颜色。

.对任何的本文widget(text widget) 视窗设定一个预设值,除了xedit
视窗以外:

*Text*Background:pink
xedit*Text*Background:navy

.和上例原理相同:

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!