• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

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

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 19次 | 进入软件测试论坛讨论

领测软件测试网
第16章 实际的使用Resource
前一章解释X resources的规则----为什麽需要它们,结构如何工作和 
resource规格的格式。本章中继续讨论resources ,但较强调实用性:我们告 
诉你如何及何处设定resources 预设值,来影响你的系统的一部份或全部。在 
本章结束前,我们将完成一些□例,点出你可能常见的错误,并告诉你如何克 
服它们。 

在这些□例中,我们假设你自己的工作站叫做venus ,并且大部份时间你 
是使用它。从venus 的显示器,你可在远方的机器saturn和mars上执行client 
应用程式且和venus 共享档案系统;neptune 则不可,我们曾在第4章描述过。 

当你在本章中时,记得resource结构是:传递资讯给应用程式,通常这些 
资讯是用来传递一些比较感兴趣的预设值(例如色彩和字型),但只要应用程 
式取得协调你就能使用这种设施传递任何资讯。所以我们一般状况下倾向於把 
”resource规格””预设值”(defaults)”resource”这三个名词视为同一含 
意。 


16.1 在何处储存resource的预设值 

在上一章我们只告诉你输入resource规格到”一个资料库”,但未告诉你 
如何做。事实上有几个不同的地方可以储存预设值:这些”地方”通常是一个 
你可以用任何编辑器修改的简单的文字档案,但有一个特殊的位置需要特殊的 
工具来设定它,我们先很快的给你一个概念,再讨论细节部份。 

首先它的架构非常的复杂:包含命令列选项总共有八种设定resource方法, 
但有两个重点需要注意: 

1 .你最好只使用其中的一或二种设置,只要你做完启始设定,你将只 
须改变预设的设定。 

2 .系统是被设计来掌握许多不同模式的工作,和满足那些在许多显示器 
上工作或在一台显示器上工作而存取远方机器的使用者的。 

总结来说,这些设置是提供来让系统尽可能富於弹性,但任何时刻你将只 
须存取其中的子集合而已。 


16.1.1 设定Resource的八种方法 

总共有八种方法设定resource,但它们可分为下面几类: 

.应用程式专属的(Application-specific)resource:resource的表列, 
限定档案只能被特定的应用程式读取。 

.Server专属的resource:应用设定,不管应用程式在那一种主机上执行。 

.主机专属的设定(Host-specific-setting) :对应用程式在主机上执行 
有关的设定,和显示器无关。 

.命令列选项:在执行时期做一次关闭(one-off) 设定。 

应用程式专属的resource -- 方法1 和方法2 

Toolkit 程式初始时在和应用程式直接相关的两个档案中寻找resource, 
这些档案只能被特定的应用程式读取: 

1 .应用程式--类别(Application-class) resource档案:这个档案包含 
了机器一般性(site-wide) 对应用程式的类别之预设值,通常为系统 
管理者所设定。它的名称就是应用程式类别的名称,在标准安装的系 
统中它是储存在目录/usr/lib/X11/app-defaults 中,例如xterm 的 
相关档案为: 

/usr/lib/X11/app-defaults/XTerm 

在core版中,有一个相关於Xmh 的此种档案,观察此档案可以看所使 
用之设定的型态。 

2 .你自己拥有的应用程式专属的resource档案:这个档案的名称和上述 
相同,但它存放在不同的地方----由shell 变数$XAPPLRESDIR所指定 
的目录,如果未定义,则放在home目录。例如对Xmh 类别的程式,它 
的档案放在下列二者之一: 

$XAPPLRESDIR/Xmh 
$HOME/Xmh 

你可以使用此种档案,处理方法1 中你不喜欢的 site-wide档案使其无 
效。 

Server专属的Resource -- 方法3 和方法4 

这是对你目前工作的Server(显示器)做有关的设定。键盘的设定通常是 
server专属的(因为不同的显示器有不同的键盘)。另一个server专属的特徵 
为显示器是彩色或单色。 

Resource和这些有关的项目会被所有与这个终端机相关的应用程式应用到, 
并且不论应用程式在何主机上执行。(例如,如果你使用的显示器为单色,则 
不管你的应用程式在何处执行,你还是不会要它使用彩色。) 

储存server专属设定的方法是: 

3 .server的RESOURCE_MANAGER性质(property):(你可在12章中xprop 
的输出看到),使用下述的xrdb程式,你可以在server的根视窗的 
RESOURCE_MANAGER性质中储存resource设定。它的优点如下: 

(a) 你不需编辑任何档案即可设定预设值。(当你为了了解系统而实 
验系统时特别有用) 

(b) resource被server掌握,所以不论应用程式在那一部主机上执行, 
均能被所有的应用程式应用。在我们的□例中,在neptune 的 
情况下特别有用,甚至在不和我们的显示机器venus 共享档案系 
统时,它仍然自动地选出为了使用此显示器所必需的resource设定。 

4 .你的$HOME/.Xdefaults档案:(只有在根视窗没有RESOURCE_MANAGER 
性质定义的情况下使用)。如果你对xrdb尚不熟悉,你便可以此档取 
代,但你必须在每一部你执行client应用程式的机器上均设定一个。 

主机专属设定 -- 方法5 和方法6 

主机专属预设值和server专属相反,不管应用程式所使用机器的终端机为 
何,只要应用程式在此主机上执行,均使用主机专属预设值,你可以用它们来: 

.让应用程式在不同的机器上对不同的档案系统作计算,例如:被一个应 
用程式读取的资料档案可能在不同的主机上保持不同的位置。 

.区分显示在同一个萤幕上不同的主机的视窗(这些视窗可能由同一个应 
用程式执行),例如:你可以要所有在mars机器上执行的xterm 的视窗 
为红色的边框,而在saturn上执行的视窗为黄边。 

.调高一个相同的应用程式在不同的client机器上版本的差异,例如: 
xterm 在venus 是标准的MIT 版,但在neptune 机器上是由第三集团修 
改过以适应机器结构的产品,这两版的xterm 可能并不完全相容。 

主机专属Resource储存在: 

5 .由$XENVIRONMENT 来的档案名称:如果shell 变数$ENVIRONMENT有被 
定义,它会被解释为一个含有resource设定的档案之完整的路径名称。 

6 .你的$HOME/.Xdefaults-thishost 档案:(当$XENVIRONMENT 未被定 
义时使用)。注意它和我们先前的档案有所不同,它必须附加上主机 
名称,例如,如果你在neptune 执行应用程式而在venus 显示(假设 
RESOURCE MANAGER性质未定义),则server专属 resource 读取自: 

.Xdefaults 

而主机专属resource则是: 

.Xdefaults-neptune 

两者均在neptune 的家目录(home directory)中。 

注意:在不同的小节中,我们曾说过类似”server专属resource读取自...” 
这可能造成误导:”如果你实际需要,你可以放置任何型态的resource设定到 
任何的档案或资料库。”我们真正的意思是你应该放置机器特性或不论甚麽的 
resource到任何地方,如果你这样做,你将获得你需要的动作。 

命令列选项 -- 方法7 和方法8 

最後,你可以藉著命令列选项设定应用程式的值。通常当你设定预设值时 
,为的是你不需要使用选项为你的程式作X相关的设定。但你实际上可以用它 
们来: 

.一次关闭(one-off) ,例如:你暂时性地在萤幕上需要一个极小的xedit。 

.为了区别在相同应用程式中各自的成员,你已看过一个这样的例子,当 
我们使用命令 

xterm -name demo 

来设定应用程式的成员名称给demo,将造成以应用程式名称为demo的 
resource取代xterm 的resource。 

命令列选项分为下列两种: 

7 .应用程式专属选项:例如xclock的-chime的xpr 或-scale。 

8 .Toolkit 标准选项:所有用到Toolkit 的应用程式均接受一些标准的 
命令列选项,我们看过其中的大部份,包括-fg, -bg, -display, 
-geometry 等等,标准选项的清单在”X Toolkit Intrinsics ”手 
册的2.3 节中。 

在其中有一个选项-xrm,重要的足以用一个小节来描述。 

Toolkit 标准选项-xrm 

大多数一般的resource均能被命令列选项明确地设定,例如你可以用 
-bg colour设定视窗背景颜色。但无论如何,有一些resource并没有符合的选 
项。为了克服这点,Toolkit 提供一个 "捕捉遗漏" (catch all) 的选项-xrm 
(X Resource Manager 缩写)。 

-xrm以一个引数当做resource规格,就如同你在预设值档案中输入的相同, 
例如:你可以输入: 

xclock -xrm "*update:30" 

和 

xclock -update 30 

是相等的。 

在同一命令列你可以使用数次-xrm,但每一次只能包含一个resource规格, 
例如: 

xclock -xrm "*update:30" -xrm "*chimen" 

-xrm的好处在於你可以用它来设定任何resource供应用程式使用,尤其是 
那些和命令列选项不符合的resource。其中一些非常有用的像: 

iconX, iconY:视窗表徵图左上角x,y 座标的位置。 

iconPixmap:被用来当作视窗表徵图的位元映像的名称,你可以用它 
来指定任何的位元映像当作应用程式表徵图。(位元映像 
为已有或利用bitmap程式建立。)例如:命令 

xedit -iconic -xrm "*IconPixmap:cntr_ptr"\ 
-xrm "*iconX:500"\ 
-xrm "*iconY:400" 

的意义为将xedit 设定以表徵图开始启始,表徵图的左上角 
座标为(500,400) (在大多数的显示器会在萤幕中央),使 
用名为cntr_ptr的位元映像来当作表徵图。 

backgroundPixmap:设定用一个位元映像当作背景。 

borderPixmap:设定以一个位元映像当作视窗的边,例如: 

xclock -bw 20 -xrm "*backgroundPixmap: scales"\ 
-xrm "*borderPixmap: cntr_ptr" 

执行xclock,用一个宽达20个像素的边框,视窗的背景为鱼鳞 
(fish-scales) 图案,边框则用cntr_ptr的位元映像。 

所有的这些resource当然也可用类别指定。(如IconX ,BorderPixmap等等。) 

注意:请记住,-xrm只有在程式有用到Toolkit 才可应用。 


16.1.2 设定Resource不同方法的摘要 

现在我们将如何对一个指定应用程式resource设定的八种方法作一摘要: 

应用程式专属resource:它们被两个档案掌握,且仅能被Toolkit 使用, 
其中一个档案通常由系统管理者设定,另一个由你自己设定。 

server专属的resource:不是存在根视窗的RESOURCE_MANAGER性质中,便 
是在你的$HOME/.Xdefaults档案中。 

主机专属resource:如果shell 变数$XENVIRONMENT 有定义的话,存在其 
所定义的档案中,否则在你的$HOME/.Xdefaults-host 档案。 

一次关闭设定:用应用程式的本身命令列选项来设定,和用Toolkit 标准 
命令列选项,包含”捕捉遗漏”-xrm. 

它们以下列顺序处理: 

if (程式使用Toolkit ) 
读取 /usr/lib/X11/app-defaults/class档案 (1) 
读取你的 $HOME/class档案 (2) 
if (RESOURCE_MANAGER性质被定义) 
处理内含的指定 (3) 
else 
读取你的$HOME/.Xdefaults档案 (4) 
if (shell 变数XENVIRONMENT被定义) 
读取所定义名称的档案 (5) 
else 
读取你的$HOME/.Xdefaults-host 档案 (6) 
if (程式使用Toolkit ) 
处理标准的resource选项,包含-xrm (7) 
处理应用程式本身的选项 ( 

现在我们将更详细的看一个较不熟悉的方法 -- 用来储存server本身 
resource的方法。 


16.2 在Server上储存预设值 -- xrdb 

大部份预设值的结构均和档案有关,当应用程式启始时,不同的档案被读 
取且其内容被处理,这种方式的缺点为你希望所有的client在一个特定的 
server上使用同一组的预设值,但client所执行的机器上如果没有一个共同的 
档案系统,你该怎麽办? 

答案是在server本身储存预设值。X的性质设施是一个具有一般性目的的 
结构。(记住,一个”性质(property)”是一小段已知格式资料的名称,被储 
存在server),指定由server根视窗的RESOURCE_MANAGER性质载入,且当应用 
程式启始时系统会注意此事。当视窗系统启始时,RESOURCE_MANAGER性质未定 
义:如果你要使用这个设施,你必须明确地设定它。 

并没有一个一般性的工具来操作一个性质,所以X提供了一个特殊的程式 
来处理resource性质,它就是xrdb(the X Resource DataBase 公用程式)。 


16.2.1 xrdb能为你做什麽 

为了方便起见,本章剩馀的部份,我们只把RESOURCE_MANAGER性质和它的 
内容当成”资料库”。 

xrdb的功能非常简单,它让你能: 

.设定一个新的资料库。 

.看目前有那些resource在资料库中。 

.在现存的资料库加入一个新的resource。 

.完全去除资料库。 

这些是基本操作,且很容易完成。当然也有一些更进一步的功能可以很精 
确地让你控制resource,但我们先来讨论基本操作。 


16.2.2 使用xrdb的基本功能 

xrdb的操作类似大多数Unix的程式:它从一个档案或标准输入读取输入资 
料,并且你可以用命令列选项来控制它的操作模式,它所读取的输入是我们曾经看 
过的一系列resource设定,不过比较特别的是它把这些设定载入资料库,让我们看 
一看它主要的功能: 

设定一个新的资料库:输入下面命令两者之一: 

xrdb filename 
xrdb < filename 

用以将一个档案中的设定载入到一个资料库中,如果只键入xrdb,表示你将由 
标准输入(通常为键盘)直接输入设定,稍後我们将说明xrdb所接受的档案格 
式,但现在先把输入resource设定当作和.Xdefaults档案或-xrm引数相同的方 
法,例如,你可以用下列的方式定义xclock设定: 

venus% xrdb 
xclocks*Background: pink 
xclock*update: 30 
xclock*backgroundPixmap: cntr_ptr 
<end-of-file> 

通常你用一个档案当作xrdb的输入,也就是说,xrdb从一个档案载入预设 
值作为你的视窗系统初始化的一部份。如果你很有经验,直接输入它的设定也 
许容易些。 

查看现存资料库中的内容,输入命令: 

xrdb -query 

则xrdb将以明白本文格式(plain text format) 印出资料库的内容(-query可 
以缩写为 -q )。 

(你可能记得也可以在根视窗用xprop 来看资料库的内容,但xprop 的输 
出格式不太灵巧,它给你其它一大堆你不需要的资讯。) 

如果需要,你可以抓取xrdb的输出到一个档案,编辑它,更改设定後可再 
用它当作xrdb的输入。(下一项功能告诉你一个更好的方法) 

注意:查看资料库,你必须使用选项-query。如果你忽略这个选项而只输 
入xrdb,将造成会清除资料库,且xrdb在等待你自标准输入键入你 
新的设定。 

在现存资料库加入新的设定:加入新的设定到资料库且不要破坏原有的设 
定,使用命令: 

xrdb -merge filename 

(-merge可缩写为-m,如果你省略档案名称,xrdb会自标准输入读取。) 
xrdb自指定的档案中读取resource设定,并加入现存的资料库中;对於资料库 
中已存在的resource,如果有新的设定,旧值会为新值取代,否则则不会变动。 

完全移去资料库:如同先前所述,当系统结束时资料库会自动消失,但如 
果你在系统仍在执行时移去资料库,使用命令: 

xrdb -remove 

本节介绍xrdb基本的功能,下一节我们介绍当你熟悉系统时,你可能需要 
的更进一步的功能。 

16.2.3 xrdb的档案格式 

你已知道大多数的格式细节 -- 你可以用标准的resource规格的形式 

characteristic: value 

上述的格式你已看过多次,但xrdb有两个额外的规则: 

1 .注解(comments):每一行的开头如果是惊叹号(!)会被忽略,所以 
你可以此当作注解。 

2 .xrdb预设将它的输入列传到C 前处理器。 

让我们进一步看一看前处理器的过程。 

xrdb前处理它的输入列 

让我们看一看一个你可能碰到的典型问题。假设在一般的场景,你使用下 
列显示器: 

venus 彩色萤幕,正常解析度 
saturn 单色萤幕,正常解析度 
mars 彩色萤幕,高解析度 

以上三者共享一个共同网路档案系统,当你在一个显示器上启动X,你需 
要定义预设值来反应显示器的特徵。例如:在高解析度萤幕你可能需要较大的 
预设字型,或是你不需要在单色系统上定义彩色预设值。 

如何做呢?让我们看一看,如果你能使用.Xdefaults-host 档案:在 
.Xdefaults-venus我们包含了彩色指定,而在.Xdefaults-saturn 我们只放入 
单色型态的参数。行得通吗?当然,但是是有限度的:它只能掌握应用程式在 
和server相同的机器上执行,如果应用程式在其它的机器上执行会得到它们主 
机上的预设档案。所以如果你使用venus 且在saturn启始远方的client,将会 
用到.Xdefault-saturn而错失所有的彩色指定。 

你能够只使用.Xdefault 档案来区分机器吗?不能,因为三台主机共享相 
同的档案系统,所以$HOME/.Xdefaults会被venus 获得也会被其它的机器获得。 

答案是在resource处理程序的某些地方,有一个结构可以分辨出所使用 
server的某些特徵。xrdb可以用相当简单的办法做到这点,它先定义一些说明 
server特徵的C 前处理器符号,而後将它所有的输入传递到前处理器,最後将 
处理过的资料载入资料库。指南页列出所有的xrdb定义的前处理器的符号,但 
在此处我们需要用到的是: 

X_RESOLUTION=n:n是每公尺长萤幕有多少像素。(根据我们的server,我 
们正常解析度的萤幕为每□90个像素,相当於每公尺3454个像素。) 

COLOR :只有萤幕支援彩色才被定义。 

WIDTH,HEIGHT:萤幕的宽度和高度,单位为像素。 

图16-1显示我们如何在xrdb的输入档案使用这些。(我们命名为 
$HOME/.Xresources ,稍後我们仍将再度用到。)它可以正确地做到我们所想 
要的 -- 它正确掌握了所有我们的显示器,不论是彩色或高解析度或两者都有。 

一些要点值得注意: 

┌—————————————————————┐ 
│ P197 FIG 16.1 │ 
│ │ 
│ 图16-1 利用前处理器命令的Resource档案 │ 
└—————————————————————┘ 

.你可以使用所有前处理器的功能。例如,我们使用它的表示掌握 
(expression-handling) 能力: 

#if X_RESOLUTION > 3600 

.你可以在档案中任何地方使用前处理器符号,并不只是前面有# 号的列, 
例如,当 

xload*Width: WIDTH 

在venus 上xrdb执行到时,它将会读取成: 

xload:Width: 1152 

所以由预设值可知,xload 视窗宽度将和萤幕宽度相同,高为80个像素, 
且在萤幕的正上方。 

注意:大多数Unix前处理器定义了一些和它们机器结构与作业系统相关的 
符号,这些可能会干扰到你,特别是Unix通常定义的符号,现在 
xrdb定义HOST为显示器名称中主机名称的部份,所以你可能认为你 
可以像这样使用一个resource规格: 

demo*title: X demo using display HOST 

比方在venus 上,预期它相当於: 

demo*title: X demo using display venus 

事实上,在我们的机器上会得到 

demo*title: X demo using display 1 

原因为显示器名称是unix:0.0,所以主机名称部份为unix,但前处 
理器已定义了unix,所以整个解释的顺序为: 

HOST -> unix -> 1 

你可以用xrdb的-u选项来解除符号的定义,用以克服这点,也就是 

xrdb -Unix < filename 

但即使如此,主机名称仍为unix,除非你明确地指定显示器: 

xrdb -display venus:0 < filename 

另一个会产生干扰的□例,如何你输入规格 

xedit*Font: *-sun-screen-* 

使用xrdb,现在用一个xrdb -query ,你可以看到在资料库中实际 
地设定: 

xedit*Font: *-1-screen-* 

在我们sun 的机器上,前处理器定义成另一个符号。如果你使用和你的机 
器相关的名称,你可能也会得到相同的效应。(如果你决定不需要前处理器的 
功能,你可以用xrdb的-nocpp选项停止它的功能。) 


16.2.4 如何将资料库设定和你的xrdb输入档连接在一起 

藉著像前述在一个含有大量前处理器命令的档案执行xrdb,你初始化了资 
料库,在稍後的期间,交谈式的使用xrdb,你将对资料库做大量的更动,现在 
你需要记录这些设定,且将之与原来的输入档连接,以备将来之用。 

如果你只使用xrdb -query ,你只能获得目前的设定:所有在输入档中的 
条件指令列若和现在的server不符则不会被包含。例如在saturn上执行前述的 
档案,则所有色彩和高解析度的设定,均被忽略(当然以 #开头的也不例外), 
为了克服这点,xrdb提供-edit 选项,例如命令: 

xrdb -edit myresf 

连接目前在资料库中的值到档案myresf内存在的内容,它藉著比对resource指 
定特徵值的部份做到这点:如果在档案中某一行和资料库中某一项特徵相同, 
则档案中值的部份会被在资料库中的值取代,用此方法,所有的以 #开头的列 
和条件设定均会保留在档案中。 

注意:前处理器完全不可以使用-edit 选项,那会导致问题,我们看一 
下当我们使用venus ,且以前述档案初始化资料库时,会发生什麽 
情况,假设我们做了更动: 

venus% xrdb -merge 
XTerm*font: *-courier-medium-r-*-140-* 
<end-of-file> 

然後用命令: 

xrdb -edit myresf 

将设定更改的部份放回档案,我们看到两件事: 

1 .前处理器符号在规格中值的部份会被字面(literal)值取代, 
例如: 

xload*Width: 1152 会被 

xload*Width: WIDTH 取代 

2 .在规格中只要特性符合,值均会被取代,甚至那些在条件段中 
目前尚未应用到的也不例外。例如,在前述档案,设定 
XTerm*font的那两行(一行在高解析度那段,一行在正常显示 
器那段)都会被更改,即使我们只需要改变正常显示器也不例 
外。 


16.3 一些常见的错误和如何修正它们 

特别是当你对系统是新手的时候,resource看起来相当的复杂。当有些状 
况不能正常执行,而系统无法帮助你查觉是什麽错误,或你在何处犯了错误, 
这里列出一些常见错误的明细,并提出如何修正它们。 

.如果你未设定一个应用程式的名称和类别,确定在你的resource规格之 
前加一个星号,(如果你省略这个星号,将没有任何东西会对应这个规 
格)这个错误在你使用-xrm时特别常见,例如: 

xclock -xrm "update:3" (错误) 
xclock -xrm "*update:3" (正确) 

.并非所有的应用程式均使用Toolkit ,非Toolkit 的程式不使用类别, 
且它们的属性名称也可能不同。例如,规格 

*geometry: 300*400+500+600 

对xclock,xlogo 有效,但对xcalc 无效,因它不使用Toolkit ,xcalc 
使用属性名称Geometry(开头为大写的G ),因为在这种情况,Toolkit 
类别名称和xcalc 的属性名称相同,所以单独一个规格 

*Geometry: 300*400+500+600 

可以对所有这类的应用程式有效。 

.你可能在规格中用了错误的属性或Widget的名称,特别是容易把类别名 
称和成员名称搞混,例如:以下两者均错: 

xclock*Update: 10 
xclock*interval: 10 

其它常见的错误如: 

xterm*Text*background:blue 

它不能执行的原因为xterm 并未使用Text widget ,xterm 正常的视窗 
和Tektronix 的视窗分别使用widget类别 VT100和Tek 。最後,当你 
知道一个widget是什麽类别,你可能对成员名称假设错误,不是widget 
本身便是其中之一的属性。试著更换类别名称来修正这个问题。 

.即使你已设定实际的widget和属性名称或类别,应用程式可能以不是你 
预期的方式使用它们。例如:你可能设定如下: 

xterm*Width: 40 
xterm*Height: 10 

意图用比平常较小的视窗启动xterm ,但它不能执行,xterm 只能在 
Tektronix window应用这些值,无法在正常的视窗。 

.你可能所有的设定完全正确,但仍然什麽也没发生,例如: 

xmh -xrm "*inc.Label: Include" 

是一个正确的方式,执行xmh 并指定label 为inc 盒的必须被"Include"。 
但在标准系统的发行版,是没有任何动作发生的,原因是xmh 有一个应 
用程式设定预设值档案/usr/lib/X11/app-defaults/Xmh ,其中有一行: 

xmh*inc.label:Incorporate New Mail 

这个规格较我们的设定有较高优先。 

.将规格 

*Width: 200 

单独包含在资料库将导致大多数的Toolkit 程式启始失败,且有一个 
讯息说它的"shell widget has zero height or width" 。如果你设定 
height和width 二者之一,你必须也设定另外一个。 

.如果你用编辑器建立一个resource档案,你可能省略了最後一个new line 
这将导致当你试图用xrdb载入它时整个档案均被忽略。为了避免如此, 
当载入resource时,用一个命令列像: 

xrdb resfile; xrdb -query 

如果xrdb无法列印出resfile 中的内容,就是有问题了。 

.你可能忘了用-xrm选项的引数来获得resource规格,有时有人会把 
resource规格放入一个档案,而以档案名称为-xrm的引数,预期它自此 
档案中读取resources。 

.最後,一个非常人性的错误,当你发生问题,你通常会循环动作:编辑 
resource档案... 储存它... 载入resource到资料库... 执行应用程式 
和看一看发生什麽状况。”其中载入resource到资料库”常常会被忽略 
以致你更为困惑。 

16.4 结论 

本章中,你已看过了所有你能设定resource的地方,为何有这麽多种的方 
法,如何决定设定放置在何处。你看到如何使用xrdb程式在server实际地储存 
预设值,它们在何处被server所有的client存取,甚至它们可以在远方的机器 
上执行。最後,有一些关於常见错误的实际提示,告诉你什麽需要注意。 

你现在处於实际使用resources ,和剪裁你的系统适合你的口味,resource 
结构功能非常强大且有无限的弹性,所以它可让你定制任何你需要的事。刚开 
始不妨试一些像字型或色彩之类简单的设定,当你熟於基本的结构时,再转到 
更高水准的例子。 

下一章将告诉你如何使用特别形式的resource规格 -- Translations(转 
译),来剪裁你的键盘以适於特别的应用程式。 




延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网