⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000004.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 4 页
字号:
称的来源是X由MIT&nbsp;的Athena计画产生出来)。这些widget的定义你已在许多&nbsp;<BR>的应用程式用过。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;我们在前节提过了Command&nbsp;Widget和Scrollbar&nbsp;Widget,至於Athena&nbsp;Widget&nbsp;<BR>Set&nbsp;的其它部份包含:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Label&nbsp;Widget:这个你可以想像&nbsp;--&nbsp;在视窗中显示的一个字串或图。(例&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如在xman主选项选单中的”Manual&nbsp;Browser”的标题)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Text&nbsp;Widget&nbsp;:我们在第10章描述xedit&nbsp;时提过的”building&nbsp;block”。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;它提供我们所使用的编辑功能。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Viewport&nbsp;Widget&nbsp;:一个具有卷动棒的视窗,让你可以卷动视埠(viewport)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的内容,xman使用其中之一用以显示指南页之目录。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Box&nbsp;Widget:它以一个指定大小的盒管理sub-widget的布置,且试著将&nbsp;sub-&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;widget尽量集中在一起,例如xmh&nbsp;的Reply&nbsp;、Forward&nbsp;等命&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;令钮即是由Box&nbsp;Widget布置。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;VPaned&nbsp;Widget&nbsp;:它管理sub-widget,将它们保存在垂直堆叠中,且显示了&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在两个sub-widget之间的分隔线上的”把手”(grip),把手&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以选择性的让你改变一个widget的大小,而且另一个相&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关的widget大小亦伴随变化,例如我们在图10-12&nbsp;看到的&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xman的视窗的主要的元素是被VPaned&nbsp;Widget&nbsp;管理的。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Form&nbsp;Widget&nbsp;:另一种管理一组sub-widget的方法,但对位置的选择有更多&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的弹性。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;Widget&nbsp;:它管理一群字串,将它们安排在行列中,任何的字串藉&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;著於其上碰触的动作而被选择:字串会转为高亮度,且呼叫&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一个指定的函数以完成特定的动作。xman使用一个List&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Widget来掌握在一个指南章节中指南页的表列。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;我们现在来看一下如何组合widget以获得所需要功能,我们仍然以xman为&nbsp;<BR>例。xman的指南页之目录在它的低阶是list&nbsp;widget&nbsp;,管理目录页名称的表列&nbsp;<BR>以及它本身的内容是用viewport&nbsp;widget&nbsp;(让使用者卷动至表列中所需的位置&nbsp;<BR>),将指南页的widget聚集在一起,它们是包含在一个VPaned&nbsp;Widget&nbsp;中,所&nbsp;<BR>以事实上这是一个阶层状(hierarchy)&nbsp;的widget,每一个可以完成它的专门&nbsp;<BR>功能,而所有的应用程式所使用的Toolkit&nbsp;均含有这三个widget结构。&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;15.2.3&nbsp;&nbsp;widget:名称和类别&nbsp;(Names&nbsp;and&nbsp;Classes)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;resource和预设结构是在widget名称的基础下工作,所以我们将以对名称&nbsp;<BR>的处理做一个概观方式来结束对Toolkit&nbsp;的观察,并回到先前讨论的resource。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Toolkit&nbsp;提供一个物件导向程式系统(object-oriented&nbsp;programming&nbsp;system)&nbsp;<BR>给程式设计师。它定义物件的类别(class)&nbsp;,也就是指定何时物件被建立或如&nbsp;<BR>何操作等等的物件性质。这些物件即是widget,系统将确保它们和其它的widget&nbsp;<BR>以及其它部份的应用软体以定义明确的方式交谈。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;当一个程式设计师建立一个特定类别的widget,它被称为该类别的成员&nbsp;<BR>(instance)(概括的说,一个类别是一个抽象的定义,而一个成员在某些地方&nbsp;<BR>实际地符合这些定义。)建立widget有必须一个名称,由程式设计师指定,(&nbsp;<BR>例如:程式码的实际型式为”Creat&nbsp;a&nbsp;widget,&nbsp;of&nbsp;the&nbsp;class&nbsp;Box&nbsp;Widget,&nbsp;<BR>and&nbsp;call&nbsp;it&nbsp;topBox&nbsp;”)在某些环境下widget的类别名称也会被参考到。总&nbsp;<BR>结来说,一个widget有一个成员名称和类别名称;更简单的说,一个名称和一&nbsp;<BR>个类别。&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>15.3&nbsp;&nbsp;Resources&nbsp;如何被管理&nbsp;--&nbsp;Resource管理器&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;让我们提醒自己一下我们试图用resource来做什麽?我们要能传递资讯给&nbsp;<BR>一个应用程式,告诉它以某些方式改变它的一般性动作,例如,将视窗的边&nbsp;<BR>以粉红色取代原来的黑色,或使用一些特别的字型。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;X用下述的方式掌握这些需求。你设定一个包含许多项resource规格的资&nbsp;<BR>料库,每一个resource规格以一个应用程式的某些特徵命名,且设定一个值给&nbsp;<BR>这个特徵当预设值,也就是说,一个规格&nbsp;(spec)&nbsp;的形式为:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;characteristic&nbsp;:&nbsp;value&nbsp;&nbsp;&nbsp;&nbsp;(特徵:值)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;当应用程式开始执行时,它会先询问资料库是否有任何特徵符合自己所要&nbsp;<BR>的设定,或使用相关的值,例如:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xclock*foreground:blue&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;意为将值blue设定给特徵xclock*foreground&nbsp;。用以决定一个程式的需求&nbsp;<BR>是否符合在资料库中之规格的系统部份,被称作Resource管理器。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Resource预设值能被应用到一个应用程式中的物件(通常是widget),就&nbsp;<BR>如同设计整个程式一般,(例如你可以对一个特定的子视窗在某一个命令按钮&nbsp;<BR>的背景色设定预设值,而不是只能针对所有应用程式的视窗背景)。为了能达&nbsp;<BR>到这一点,我们需要一些严谨的命名方法,以设定物件应用预设值。&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;15.3.1&nbsp;&nbsp;指定一个Resource预定应用到何处&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Resource管理器根据特徵值(characteristic)决定一个预设规格是否能应&nbsp;<BR>用在特别的情况,我们可将特徵值分为三个部份。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;&nbsp;你用以设定预设值的程式属性,例如:背景色、字型等。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你必需指定属性&nbsp;(attribute)&nbsp;--&nbsp;意即你设定什麽值给它。给定一个&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resource的规格&nbsp;而不说明它的值是无意义的。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意:在X的文献和手册中,属性通常被称为”resource”或&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”resource&nbsp;name”,”Resource”也通常被用来当作我们称为特徵值。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;特徵值的其它两个部份指定预设值在何处使用。例如只在特定的程式&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用或在特定型态的物件,或两者均是。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;&nbsp;应用到这个规格的应用程式的名称,如果你省略它,规格将应用到&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所有的应用程式。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;&nbsp;一连串的限定(restrictions)条件:当物件符合限定条件时,才会产&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;生指定的应用。限定通常为widget的名称,你可以指定从零开始任何&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数目的限定。例如:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xclock*foreground:blue&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xedit*row1*Command*Cursor:Cntr_ptr&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第一个例子没有任何限定,第二个例子有两个限定(row1&nbsp;和Command)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;三个部份依序排列&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&lt;program&nbsp;name&gt;]&nbsp;[&lt;restrictions&gt;]&nbsp;&lt;attribute&gt;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;并以特殊的分隔符号分开,我们将於稍後说明分隔符号的细节,但我&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;们先看一些特徵值的□例(为了简单起见,我们在□例中只用到颜色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;属性)。&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>一些说明Resource规格的□例&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.指定在任何地方中的前景色预设值为黄色。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*foreground:yellow&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;我们未指定任何应用程式的名称,所以此规格可应用到所有的应用程式;&nbsp;<BR>我们也未指定任何限制,所以对一个应用程式在任何地方都适用。(&quot;*&quot;&nbsp;这个&nbsp;<BR>符号就是我们方才提及的特殊分隔号的一种)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.指定只有在xclock应用程式中的前景色预设值为粉红色。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xclock*foreground:pink&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这个规格仅能在xclock适用,但是只要项目中的属性叫做&nbsp;<BR>”foreground”的均适用。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.现在,针对一个特定应用程式的特定地方:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xman*topBox*foreground:blue&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这个规格仅能在xman适用,而且只能在xman主选项选单中名为topBox的&nbsp;<BR>物件适用。(应该适用於xman中所有叫topBox的物件,但实际上只有一个&nbsp;<BR>topBox物件)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.在第二个□例(粉红色)中我们包含了应用程式名称,但忽略了任何限&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;制,现在我们反过来:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*command*foreground:green&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;也就是说,我们指定在任何应用程式中物件名称为command&nbsp;的前景色预&nbsp;<BR>设值为绿色。&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;15.3.2&nbsp;&nbsp;用类别名称一般化规格说明&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;前述的例子说明了我们对预设值结构所需的大部份功能,但它们有一个限&nbsp;<BR>制:你必须知道应用程式设计师设计在每一个应用程式中的widget名称,这&nbsp;<BR>些资讯有时包含在程式的指南页中的一部份,但通常被省略。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;无论如何,Resource管理器有一个尽量减低这个问题的方式:当你在特徵&nbsp;<BR>中不论何处用到一个应用程式名称、限制或属性名称,你均可类别名称(class&nbsp;<BR>name)来代替它。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;应用程式类别名称(Application&nbsp;class&nbsp;name):描述程式的型态,例如&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xterm&nbsp;可以是Term&nbsp;Emul&nbsp;(终端机模拟器)的类别,xedit&nbsp;和emacs&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是Editor(编辑器)的类别。(但如果xterm&nbsp;是xterm&nbsp;的类别,xedit&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是xedit&nbsp;的类别则失去意义。)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;限定类别名称&nbsp;(Restriction&nbsp;class&nbsp;name):限定几乎是一定不变的widget&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名称,所以在此地你可以用widget类别名称。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;属性类别名称&nbsp;(Attribute&nbsp;class&nbsp;name)&nbsp;:属性是如同widget一般的一个&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;型态或类别的成员(instance)。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;传统上,所有的类别名称以一个大写的字母开头,其後则为小写字母,例&nbsp;<BR>如属性”foreground”是属於”Foreground”类别,我们将简单的解释你如何&nbsp;<BR>去发现你需要用来指定项目的类别名称。首先,我们将看一些更多的□例,这&nbsp;<BR>次用到了类别或一个混合了类别和成员的□例。&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -