当前位置:Linux教程 - Linux - XUL教程之二

XUL教程之二



         XUL Tutorial - 1.2 - Adding XUL Files
    Previous Contents Reference Next
    XUL Tutorial - 关于XUL文件

    我们开始查看在Mozilla中,XUL文件是如何组的.
    包组织

    Mozilla 被组织成这样的方式,根据需要你可以安装许多构件.一个典型的安装含有浏览器、邮递员、设计师.它也对每一个安装有皮肤和本地化。这些构件或报种的每一个由一些列描述其用户界面的文件组成。例如.邮递员会有邮件消息列表窗的描述,设计师窗口和地址本对话框.

    Mozilla 提供包在chrome目录, 你可以在安装Mozilla的目录中发现他. chrome目录是所有的Mozilla用来描述用户界面的文件定居地.

    每个包可能有许多子包. 例如, 邮递员包, 含有2个子包:地址本和信息设计包.

    一个包能提供他自己的皮肤信息作为包的一部分,否则就依赖却省的皮肤.
    The word chrome refers to the user interface elements in an application. For example, in a browser, the chrome part of the window would be the toolbars, the menu and the status bar. The content area of a browser would display a different document.
    Chrome目录细节

    一个用户界面由三套文件组成,每一个存放在chrome的单独的子目录中. 这三套是:内容、皮肤和本地化包. 一个具体的构件应当提供1个或多个缺省的皮肤和本地化包, 但是用户自己可以替换.

    * 内容(Content) - 窗口和脚本
    窗口和用户界面包含的元素的声明. 这些存贮在XUL文件. 一个内容包可以具有多个XUL文件,但是,主窗口文件名应当是包名.例如bookmarks包内友一个叫做bookmarks.xul的文件。脚本文件紧挨着XUL文件.
    * Skin - 样式表和图像
    样式表描述窗口外表的细节. 与XUL文件分离以便修改一个程序的皮肤. 使用的任何图像页保存在这里.
    * Locale - 具体地区的文件
    在窗口中现实的所有文本单独存放。利用这种方法,一个用户自己可以使用一套属于自己的语言.

    看一看Mozilla的chrome目录.你会看到Jar文件捆, 一个对应安装的一个包. 例如, messenger.jar 描述邮递员构件的用户界面.modern.jar 描述现代风格的皮肤.现在,你也会看到与JAR文件对应的目录. 据推测,这些在完成jar文件的转换后将消失,该目录是未压缩的jAR文件的版本.

    你也会看到许多具有rdf后缀的文件在chrome目录中,这些文件表述安装的包、皮肤和本地化的列表.
    分辨一个包的类型

    JAR文件会描述他包含的是什么.可是,通过浏览器内容,你能确定是什么(You can view JAR files with a ZIP utility). 让我们透过一个简单的例子, messenger 包 .

    如果解开messenger.jar中的文件,你会发现它含有的目录结构像下面一样:

    content
    messenger
    contents.rdf
    messenger.xul
    -- other mail XUL and JS files goes here --
    addressbook
    -- address book files go here --
    messagecompose
    -- message composition files go here --
    .
    .
    .

    作为一个内容包,这是易于理解的, 其定级的目录叫做 content. 对于皮肤, 这个目录应当叫做 skin 而对于本地化,这个目录应当叫做 locale. 实际上,这不是必需的,但是你应当使用这种习惯来使你的包清晰. 某些包可能有多个内容、皮肤和本地化语言包,在这种情况下,你会发现每一类由一个目录.

    content/messenger 目录含有许多后缀为xul和js的文件.XUL文件有xul后缀,JavaScript文件的后缀是js,含有处理窗口功能的脚本,许多XUL文件的脚本文件与之关联.

    在上面的列表中,显示2个文件. 当然还有其它的文件,但是为了简单,不再显示. messenger.xul文件是一个XUL文件,描述显示信息列表的邮递员主窗口. 内容包的主窗口应当使用包名作为文件名,后缀为xul. 一些其它的XUL文件由messenger.xul包含,这些文件描述分离的窗口.例如 subscribe.xul文件用与订阅新闻组的对话框.

    每个包中发现的contents.rdf文件, 与内容(content)一一对应, 皮肤和本地化语言包. 这个文件的细节将在今后描述,简短地说,用于描述内容包.

    二个子目录addressbook and messagecompose, 描述附加的邮递员构件.不存在不同的目录中禁用于分离.
    皮肤

    modern.jar 和classic.jar 文件描述Mozilla提供的皮肤. 其结构与内容包类似,例如, modern.jar:

    skin
    modern
    navigator
    contents.rdf
    -- navigator skin files go here --
    messenger
    contents.rdf
    -- messenger skin files go here --
    editor
    contents.rdf
    -- editor skin files go here --
    communicator
    contents.rdf
    -- communicator skin files go here --
    global
    contents.rdf
    -- global skin files go here --
    .
    .
    .

    这里,有五个目录存在,每个针对一个包使用的皮肤.例如, editor 子目录描述构件编辑器(设计师)的皮肤. global目录包含的皮肤文件对所有的包是通用的. 这些文件将被用于所有的构件. You will usually use this one yourself.

    你也许注意到有五个contents.rdf文件. 这是由每个内容单独使用的皮肤.你的浏览器可以像邮递员一样有不同的皮肤 ,尽管大多数外表由全局部件决定,你不用去看有多大的差别. 他们也是分离的文件,因此新的组件能被加入以及存在的组件可以被删除.

    一个皮肤由CSS文件和许多用来定义界面样子的图像文件组成. 工具条按钮使用图像.由messenger.xul使用的messenger.css文件含有邮件工具条、消息列表样子的定义.

    通过改变CSS 文件, 你可以调整窗口的外表,而无需改变它的函数. 这是你能够创建皮肤的方法.
    本地化

    en-US.jar文件描述了每个构件的语言信息, 此情形是为美国英语.像皮肤一样, 每个语言将包含由包使用的针对该语言的具体文本的文件.

    通常, contents.rdf 文件提供了本地化提供的文本的包的列表. 子目录为每个包提供文本.

    本地化文本以DTD文件和properties文件二种类型存贮. DTD文件的后缀是dtd,含有在窗口中显示得每一个文本串的实体定义, 例如messenger.dtd 含有每个菜单定义的实体,另外,也含有每个菜单快捷键的定义,因为对于不同的语言,可能会不同. DTD文件由XUL文件使用, 因此,一般来讲,每个DTD文件会由一个对应的XUL文件.

    Properties是类似的, 但是由脚本文件使用. messenger.properties含有少数这样的串.

    这种结构意味着,把Mozilla或构件切换成不同的语言,只需增加一个新的针对该语言的本地化.
    其它的包

    Mozilla中许多包是通信者包的子包.例如,你将发现书签窗口、浏览历史和首选像对话框在通信者包内. 因为有许多一般的包放在那里。他们没有特别指出They are put there because they are general to a number of packages. There is nothing special about them.

    一个特别的包叫做toolkit. (or global). 我们早先为皮肤而看的global目录, toolkit.jar含有其相应的内容.它含有一些全局对话框核定义. 也定义了却省的外表和各种构件的功能,例如文本框和按钮. 在皮肤global子目录的global.css 文件包含所有的XUL接口元素的却省的样子. 大多数皮肤变化涉及变换这个文件.
    增加一个包

    The structure described above is where the default packages, skins and locales are stored. However, they do not have to be placed there. If you have another package installed, it may be placed anywhere. The RDF files in the chrome directory store the list of installed packages, skins and locales and where they are located.

    A user may have multiple skins and locales installed that both modify the same package. Only one skin and locale per package is active at any given time. The RDF files also specify which skins and locales are active.

    (Next) In the next section, well look at how to refer to files in the chrome structure.
    XUL Tutorial - 1.2 - Adding XUL Files
    Previous Contents Reference Next
    发布人:fanyoou 来自: