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

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

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

*Command*Backgrond:green
xman*Command*Backgrond:white
xman*manualBrowser*Command*Backgroundrange


如何发现成员和类别名称

这很困难,因为没有简单和一致的widget名称、类别、属性等等的文档,
我们只能列出每一个最好的来源,并且提示您如何获得更多的资讯。

应用程式成员名称(Application instance name) :这很容易--他就是您
执行的应用程式名称。假如此程式使用Toolkit ,您能在命令列以选项-name
string明确地指定一个不同的应用程式名称,为何您需如此作?因为他让您在
单一应用程式中定义超过一组的预设值,而您能够使用-name 在其间转换。例
如,您能够定义一个xterm 的正常预设值,但对名为demo的应用程式定义一个
很大的视窗尺寸和大尺寸的字型,您能够用:

xterm -name demo

给您一个用来展示或教学的xterm。

应用程式类别名称(Application class name):这没有文档说明,最简
单找寻他的方法是启动应用程式并在视窗中使用xprop ,性质 (property)当中
的WM_CLASS会给您应用程式成员及类别的名称,例如,对xterm 您会得到:

WM_CLASS(STRING) = "xterm","XTerm"

Restriction/Object/Widget 成员名称:程式的指南页会列出您最想要存
取的物件名称,例如:xman列出topBox,help,manualBrowser 等等,假如指
南页并未给您成员名称,则唯一的方法是假如可能,直接看他们的原始程式码
。(这种方法通常无法令人满意)

Restriction/Object/Widget 类别名称:这容易些,大部份的指南页会告
诉您有兴趣的物件类别,即使没有的话,大部份的物件也是标准集合中的
widget,当您从系统中使用他们时,您通常能猜出他们属於哪一个类别。(例
如:您从未被告知scrollbar 的成员名称,但他99.9% 的机会是类别Scrollbar
的widget (成员)。)

属性名称和类别:大多数的指南页会列出名称,通常也会有类别,xclock
的指南页便是很清楚的□例。

无论如何,利用Toolkit 写的程式通常使用标准的widget,他的属性并不
会在指南页中列出,但通常由一组全部或部份的属性组成,要找到这些属性,
您必须在Toolkit 文档中寻找:

. "X Toolkit Intrinsics" 手册中的附录E 列出任何标准的"resource"
(也就是属性)名称和类别。成员名称项目看起来类似:

#define XtNborderWidth "borderWidth"

任何的名称均以XtN 开头,跟随其後的名称则以小写字母开头,而类
别的名称则以XtC 开头,类别的项目看起来像:

#define XtCBorderWidth "BorderWidth"

在双引号中的便是名称,也就是说,borderWidth 是成员名称,
BorderWidth 是类别名称。

. 查看"X Toolkit Athena Widgets"手册的2.3 节("Common Arguments
in the Widget Argument list",可看到被任何widget使用到的
resource名单,包括名称、型态、预设值和一段文字叙述。名称的
定法如上所述,也就是以XtN 开头,XtN 之後则为属性名称。

. 查看"X Toolkit Athena Widgets"手册中对widget的描述,每一个会
列出他所使用的"resource",和上述相同。

. 假如以上均行不通时,您能够查看 widget 的原始程式 (source code),
resources 可用到的部份列在 XtResource 资料结构中。例如,Athena
Scrollbar Widget的程式内包含:

static XtResource resource[]=
{XtNwidth, XtCWidth,...},
{XtNheight, XtCHeight,...}.

附录A中”文档指引”中会告诉您如何找到类似像这个项目的原始程式。

注意:Resource Manager对设定的规格(spec)并无限制,均能接受,对於属
性、元素名称或类别并无事先定义的清单。您所给定的规格可能毫
无意义,但毋需介意,他将存在资料库中,所以事实上一个resource
规格被接受并不意味您已得到正确的规格和正确的属性或物件或应
用程式;无论如何,他的一个重要的用途为在属性未被设定前您可先
设定其预设值。


15.3.3 Resource规格之分隔号概观

您能够用星号 (*)或点号 (.)来分隔resource规格的元素,星号比较通用
一些,他让您指定那些符合□围的案例的特徵。我们看到

xclock*foreground:pink

用来指定xclock中任何东西均使用foreground属性,所以在此□例中能够看出
;星号具备通用字元的效果,甚至能够再一般化一点:

*Foreground:yellow

他将适合任何应用程式,而句点只是分隔组件,他表示每个组件都必须一一对
应,所以规格:

xman.Manual Browser.Help.background:black

并不会适用於命令按钮,或含有xman的视窗的不同widget。在我们对这两种分
隔号作更精确描述前,我们需要更周详的看一下Resource Maneger的操作。


Resource Manager如何运作

稍早,我们曾说过一个应用程式会查询resource预设规格的资料库看是否
符合,现在我们描述查询如何掌控这些规格。

Resource被应用程式中的个别物件(通常是widget)所使用,而物件则被
在应用程式上端hierarchicallyixwidget hierarchy安排,然後可能由一个
widget管理其他的widget配置,例如本文视窗、命令选单等等。例如应用程式
xeditixwidget 在 xprognxxedit中的阶层结构如图15-1(每一行物件名称之
後括弧内为类别名称)。

┌————————————————————┐
│ p181 fig 15.1 │
│ │
│ 图15-1 xedit中物件(widget)的阶层 │
└————————————————————┘


对每一个物件,应用程式欲查询Resource资料库时,他必须传递物件的成
员全名和类别全名给Resource Manager,和物件所用的一群属性,和类别名称
的一群属性,例如对SAVE按钮,应用程式指定:

full instance name xedit.vpaned.row1.Save

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