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

XUL教程之四



        
    XUL Tutorial - 1.4 - Manifest Files
    Previous Contents Reference Next
    XUL Tutorial - 清单文件Manifest Files

    本节,你将看到如何把chrome和XUL文件达成一个包并创建清单文件.
    包装Packages

    一个包是一组XUL文件和定义用户界面功能的脚本文件.包可以安装到Mozilla并被chrome URLs引用.

    一个包可以含有任何文件,根据需要可以将包中不同的部分分裂成不同的子目录.例如, bookmarks 和history viewer 是信使communicator 包的部件, 但是他们存储在不同的子目录.

    保存包由两种方法,可以是目录或者JAR档案之一.每个包会由一个清单文件, contents.rdf, 描述包.这个文件放在JAR文件的旁边. 文件名必须是contents.rdf 而且是一个 RDF (Resource Description Framework) 格式.今后我们将更多地 了解RDF.
    清单文件Manifest Files

    contents.rdf 描述包的内容.它也可以用来描述皮肤和本地化包.

    一旦你知道如何去做,建立清单文件会是非常简单的.下面的模板作为起点.



    xmlns:chrome="http://www.mozilla.org/rdf/chrome#">





    chrome:displayName="title"
    chrome:author="name"
    chrome:name="component">



    你可以使用这个模板并进行较小的改动以用于你具体的包. 让我们分成一个又一个片段进行介绍.



    xmlns:chrome="http://www.mozilla.org/rdf/chrome#">

    这三行应当放在contents.rdf 文件的开头. 由于 RDF是一个XML格式, 第一行包含XML文件的标准,下一行声明名域,一个为RDF,另一个为chrome.如果你不理解其意义,不用担心. 只要把这几行放在清单文件的开头便可.





    这一行用来描述是什么,包、皮肤或本地化清单文件, . 本处描述一个包 (as indicated by the word package in the text). 包名是 component. 当然,你可以用你创建的包来替换这个名字. 例如,Mozilla的邮件程序名字为 messenger.

    RDF:li 标记很像HTML中的 li 标记,用来声明一个元素的列表. 这样,通过使用这个标记,你可以声明多个包。.

    为了皮肤包,将二处的package替换成skin,类似地可以将而处package替换成local. For example, the following specifies a skin:





    注,唯一的差别是将二处package替换成skin以及skin的名字是 lueswayedshoes.

    chrome:displayName="title"
    chrome:author="name"
    chrome:name="component">


    这个快用来提供包、皮肤和本地化详细资料.你需要对每个li标记元素进行描述. about 属性的值应当等于li标集中资源属性的值.

    其他三个属性描述包的附加信息:

    * displayName
    显示给用户的标题,例如 Messenger.
    * author
    本包的作者.
    * name
    包、皮肤、本地化的名字.通常,应当是目录名.

    让我们为将要建立的文件查找对话框来创建contents.rdf.需要描述包. 由于没有子包、皮肤或本地化,所以域上面的模斑很像.



    xmlns:chrome="http://www.mozilla.org/rdf/chrome#">





    chrome:displayName="Find Files"
    chrome:author="Whoever"
    chrome:name="findfile">



    本处,构件名是findfile,这意味着我们可以引用,通过chrome URL:

    chrome://findfile/content/findfile.xul

    安装一个包装

    已经安装的包装保存在chrome目录下的all-packages.rdf文件. 在你安装一个新包是他会自动改变. 就像清单文件,它也采用RDF文件格式. 在第一次产看这个文件时,开启来比清单文件要复杂很过,但是,如果你熟悉XML,你会注意到它实际上非常相似.

    省力地,我们不直接编辑这个文件.每当Mozilla启动,它会按一个特殊文件,叫做installed-chrome.txt检查chrome目录.这个文件包含一个列表,非常简单的格式列出所有的包装、皮肤和本地化包,这些包是等待要安装的. Mozilla 扫描列表中的每一行并安装每一个,或者在必要时进行更新.

    因此,要安装一个新的包装 ,你值需要在 installed-chrome.txt中增加一个新的入口并重新启动Mozilla. Mozillas XPInstall 系统将逊序脚本来自动安装这些包装,在开发期间,我们可以直接修改这个文件.

    installed-chrome.txt 文件应当安装在CHROME目录,每行是一个入口:

    content,install,url,resource:/chrome/findfile/content/findfile/
    skin,install,url,resource:/chrome/findfile/skin/findfile/

    上面的用来安装查找文件包装和他的皮肤.每行的格式比较简单:

    * Type
    第一个值可以被设置成 content 对于chrome包装, skin对于皮肤或 locale对于本地语言.
    * Install
    第二个值应当设置为 install 来实现安装. 对于皮肤和本地语言包, 你也可以设置为 profile来实现安装到用户的 profile 目录.这意味着是为某个特定用户安装的.
    * URL Type
    设置文本 url来指示新包装、皮肤或本地语言包的URL地址 ,如果你用path,你就可以利用文件路径 (which should be in the format of your operating system).
    * URL
    存贮包装的地方 URL或path. 这个可以是含有contents.rdf的目录或者JAR文件. 对于一个目录的引用,要以"/"结束. .

    resource URL与文件的 URL类似,不同之处是其根目录是Mozilla安装的目录.在指定URL时,要确认目录以"/" 结束. resource URL 应当只有一个"/"在冒号后面.

    如此一来,增加的行会指定一个目录,在该目录中存放 contents.rdf 文件. 如果你有多个包装,就为每个包装添加一行 .

    尽管Mozilla提供了命名约定, 但是你可以把文件放置到任何你需要放置的地方.例如, 下面将安装一个新的包装载/main/calculator/目录.

    content,install,path,/main/calculator/

    如果你已经将文件打包成JAR文件, 你可以使用JAR URL来引用它t. 通过"!"分成二个部分. 前面的部分是JAR文件的URL,而后面的部分是该档案中的文件或者目录.对于查找文件对话框举例如下:

    jar:resource:/chrome/findfile.jar!/content/findfile/

    总结

    利用下面的步骤,来安装一个包、皮肤或语言包.你不需要安装XUL,但是,这将限制你使用脚本.

    1. 创建一个你的包、皮肤或语言包的目录. 按照约定,其内应当有子目录content, skin or locale 之一, 在子目录内由一个与包同名的子目录.
    2. 创建一个contents.rdf文件并放在该子目录.
    3. 如果chrome目录不存在 installed-chrome.txt就创建一个,增加一行指向目录.你也应当删除chrome目录中的不同的RDF文件. This will cause them to be deleted.
    4. 启动Mozilla. 新的包会被自动安装.

    (Next) In the next section, we will create a simple window.
    XUL Tutorial - 1.4 - Manifest Files
    Previous Contents Reference Next
    发布人:fanyoou 来自: