📄 00000004.htm
字号:
含有类别名称的Resource规格说明□例 <BR> <BR> 这些□例展示出你如何在Resource规格中使用类别,而较前述以更一般性 <BR>的方式设定预设值,它们也解释了你如何能使用一个类别来设定一个预设值给 <BR>较大□围的情况,和将类别与成员结合起来以拒绝预设值在某些特殊情况下设 <BR>定。 <BR> <BR> .指定在任何地方前景色的预设值为黄色 <BR> <BR> *Foreground:yellow <BR> <BR> 这个□例和先前□例的区别在於我们是对Foreground类别指定预设值。这 <BR>个区别之所以重要,是因为并非所有在类别Foreground的属性,它的成员名称 <BR>都是叫foreground。例如,xclock的指针的颜色可由类别Foreground的属性来 <BR>决定,但它的成员名称不叫foreground而叫hand。 <BR> <BR> .我们可以用这种结构来帮助我们在文件不清楚的情况下,藉著以强烈对 <BR> 比的组合设定预设值来分辨物件的类别: <BR> <BR> xmh*Command*Foreground:khaki (土黄色) <BR> xmh*Command*Background:maroon (粟色) <BR> <BR> 如此将使所有的命令widget(command widget)呈现醒目而美丽的颜色。 <BR> <BR> .对所有的本文widget(text widget) 视窗设定一个预设值,除了xedit <BR> 视窗以外: <BR> <BR> *Text*Background:pink <BR> xedit*Text*Background:navy <BR> <BR> .和上例原理相同: <BR> <BR> *Command*Backgrond:green <BR> xman*Command*Backgrond:white <BR> xman*manualBrowser*Command*Background:orange <BR> <BR> <BR>如何发现成员和类别名称 <BR> <BR> 这很困难,因为没有简单和一致的widget名称、类别、属性等等的文件, <BR>我们只能列出每一个最好的来源,并且提示你如何获得更多的资讯。 <BR> <BR> 应用程式成员名称(Application instance name) :这很容易--它就是你 <BR>执行的应用程式名称。如果此程式使用Toolkit ,你能在命令列以选项-name <BR>string明确地指定一个不同的应用程式名称,为何你需如此作?因为它让你在 <BR>单一应用程式中定义超过一组的预设值,而你可以使用-name 在其间切换。例 <BR>如,你可以定义一个xterm 的正常预设值,但对名为demo的应用程式定义一个 <BR>很大的视窗尺寸和大尺寸的字型,你可以用: <BR> <BR> xterm -name demo <BR> <BR>给你一个用来展示或教学的xterm。 <BR> <BR> 应用程式类别名称(Application class name):这没有文件说明,最简 <BR>单找寻它的方法是启动应用程式并在视窗中使用xprop ,性质 (property)当中 <BR>的WM_CLASS会给你应用程式成员及类别的名称,例如,对xterm 你会得到: <BR> <BR> WM_CLASS(STRING) = "xterm","XTerm" <BR> <BR> Restriction/Object/Widget 成员名称:程式的指南页会列出你最想要存 <BR>取的物件名称,例如:xman列出topBox,help,manualBrowser 等等,如果指 <BR>南页并未给你成员名称,则唯一的方法是如果可能,直接看它们的原始程式码 <BR>。(这种方法通常无法令人满意) <BR> <BR> Restriction/Object/Widget 类别名称:这容易些,大部份的指南页会告 <BR>诉你有兴趣的物件类别,即使没有的话,大部份的物件也是标准集合中的 <BR>widget,当你从系统中使用它们时,你通常能猜出它们属於哪一个类别。(例 <BR>如:你从未被告知scrollbar 的成员名称,但它99.9% 的机会是类别Scrollbar <BR>的widget (成员)。) <BR> <BR> 属性名称和类别:大多数的指南页会列出名称,通常也会有类别,xclock <BR>的指南页便是非常清楚的□例。 <BR> <BR> 无论如何,利用Toolkit 写的程式通常使用标准的widget,它的属性并不 <BR>会在指南页中列出,但通常由一组全部或部份的属性组成,要找到这些属性, <BR>你必须在Toolkit 文件中寻找: <BR> <BR> . "X Toolkit Intrinsics" 手册中的附录E 列出所有标准的"resource" <BR> (也就是属性)名称和类别。成员名称项目看起来类似: <BR> <BR> #define XtNborderWidth "borderWidth" <BR> <BR> 所有的名称均以XtN 开头,跟随其後的名称则以小写字母开头,而类 <BR> 别的名称则以XtC 开头,类别的项目看起来像: <BR> <BR> #define XtCBorderWidth "BorderWidth" <BR> <BR> 在双引号中的便是名称,也就是说,borderWidth 是成员名称, <BR> BorderWidth 是类别名称。 <BR> <BR> . 查看"X Toolkit Athena Widgets"手册的2.3 节("Common Arguments <BR> in the Widget Argument list"),可看到被所有widget使用到的 <BR> resource名单,包括名称、型态、预设值和一段文字叙述。名称的 <BR> 定法如上所述,也就是以XtN 开头,XtN 之後则为属性名称。 <BR> <BR> . 查看"X Toolkit Athena Widgets"手册中对widget的描述,每一个会 <BR> 列出它所使用的"resource",和上述相同。 <BR> <BR> . 如果以上均行不通时,你可以查看 widget 的原始程式 (source code), <BR> resources 可用到的部份列在 XtResource 资料结构中。例如,Athena <BR> Scrollbar Widget的程式内包含: <BR> <BR> static XtResource resource[]= <BR> {XtNwidth, XtCWidth,...}, <BR> {XtNheight, XtCHeight,...}. <BR> <BR> 附录A中”文件指引”中会告诉你如何找到类似像这个项目的原始程式。 <BR> <BR> 注意:Resource Manager对设定的规格(spec)并无限制,均能接受,对於属 <BR> 性、元素名称或类别并无事先定义的清单。你所给定的规格可能毫 <BR> 无意义,但毋需介意,它将存在资料库中,所以事实上一个resource <BR> 规格被接受并不意味你已经得到正确的规格和正确的属性或物件或应 <BR> 用程式;无论如何,它的一个重要的用途为在属性未被设定前你可先 <BR> 设定其预设值。 <BR> <BR> <BR> 15.3.3 Resource规格之分隔号概观 <BR> <BR> 你可以用星号 (*)或点号 (.)来分隔resource规格的元素,星号比较通用 <BR>一些,它让你指定那些符合□围的案例的特徵。我们看到 <BR> <BR> xclock*foreground:pink <BR> <BR>用来指定xclock中任何东西均使用foreground属性,所以在此□例中可以看出 <BR>;星号具有通用字元的效果,甚至可以再一般化一点: <BR> <BR> *Foreground:yellow <BR> <BR>它将适合任何应用程式,而句点只是分隔组件,它表示每个组件都必须一一对 <BR>应,所以规格: <BR> <BR> xman.Manual Browser.Help.background:black <BR> <BR>并不会适用於命令按钮,或含有xman的视窗的不同widget。在我们对这两种分 <BR>隔号作更精确描述前,我们需要更详细的看一下Resource Maneger的操作。 <BR> <BR> <BR>Resource Manager如何运作 <BR> <BR> 稍早,我们曾说过一个应用程式会查询resource预设规格的资料库看是否 <BR>符合,现在我们描述查询如何掌握这些规格。 <BR> <BR> Resource被应用程式中的个别物件(通常是widget)所使用,而物件则被 <BR>在应用程式上端hierarchicallyixwidget + hierarchy安排,然後可能由一个 <BR>widget管理其它的widget配置,例如本文视窗、命令选单等等。例如应用程式 <BR>xeditixwidget 在+ xprognxxedit中的阶层结构如图15-1(每一行物件名称之 <BR>後括弧内为类别名称)。 <BR> <BR> ┌————————————————————┐ <BR> │ p181 fig 15.1 │ <BR> │ │ <BR> │ 图15-1 xedit中物件(widget)的阶层 │ <BR> └————————————————————┘ <BR> <BR> <BR> 对每一个物件,应用程式欲查询Resource资料库时,它必须传递物件的成 <BR>员全名和类别全名给Resource Manager,和物件所用的一群属性,和类别名称 <BR>的一群属性,例如对SAVE按钮,应用程式指定: <BR> <BR> full instance name xedit.vpaned.row1.Save <BR> full class name Xedit.VPaned.Box.Command <BR> attribute instance-names borderWidth,cursor,font,label,... <BR> attribute class-names BorderWidth,Cursor,Font,Label,... <BR> <BR> 而後Resource Manager检查每一个在资料库中的规格,看它是否和应用程 <BR>式所传来的属性和物件名称相符。如果相符发生,在资料库中规格值的部份会 <BR>传回应用程式。 <BR> <BR> 在这种相符的操作中,星号和句号的区别非常重要。简单来说,我们可以 <BR>想到Resource Manager只是以单字为基准来对应文字串,句号正是每一个单字 <BR>的区隔号,星号也是分隔号,但不同的是它可以通用字元的方式代表从零到任 <BR>意数目的单字,对於对应唯一的限制是在资料库中规格的属性必需对应查询应 <BR>用程式所传来的属性,你不可对属性用通用字元。 <BR> <BR> 现在你可以看到不同的规格如何工作: <BR> <BR> *foreground:yellow <BR> <BR>可以应用於任何应用程式中的任何物件。因为星号对应到所有的应用程式和所 <BR>有的限定和物件名称。 <BR> <BR> *Command.Foreground:violet <BR> <BR>应用於任何应用程式中任何Command 型态中Foreground类别的任何属性。 <BR> <BR> xedit.vpaned.row1.Help.background:navy <BR> <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -