Chinaunix首页 | 论坛 | 博客
  • 博客访问: 538400
  • 博文数量: 83
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1169
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-29 22:34
文章分类

全部博文(83)

文章存档

2011年(3)

2010年(29)

2009年(30)

2008年(21)

我的朋友

分类: 系统运维

2009-09-09 15:33:48

如上图所示,配置菜单其实是面板标签的一个下拉菜单(“option1”和“option2”),这些选项其实是一些checkbox,用户通过选择来设置自定义值。配置菜单的选项还可以通过在浏览器url地址栏中输入“about:config”来访问和更改。

1,加入下拉菜单

function HelloWorldPanel() {}
HelloWorldPanel.prototype = extend(Firebug.Panel,
{
    // . . .
    getOptionsMenuItems: function(context) {
        return [{
            label: "My Menu Item",
            nol10n: true,
            type: "checkbox",
            command: function() { alert("Hello from the Options menu!"); }
        }];
    }
})

添加下拉菜单只需像上面那样添加getOptionsMenuItems接口:

This is done by getOptionsMenuItems method that must be implemented in the specific panel object (i.e. HelloWorldPanel in our case).

但这样子还不能通过“about:config"来访问.

2,在“about:config"中加入配置条目并与下拉菜单相关联

helloworld@janodvarko.cz/
    chrome/
        content/
            helloworld/
                helloWorld.xul
                helloWorld.js
    defaults/
        preferences/
            prefs.js
    chrome.manifest
    install.rdf

首先加入以上文件prefs.js,并在该文件中写入:

pref("extensions.firebug.helloworld.option1", true);
pref("extensions.firebug.helloworld.option2", false)

我的理解是只要这样就会在,就会在“about:config”中加入option1和option2,但这样还不能与下拉菜单关联起来

3,“about:config”里的条目与下拉菜单关联

在2的基础上,修改helloworld.js文件,如下

function HelloWorldPanel() {}
HelloWorldPanel.prototype = extend(Firebug.Panel,
{
    // . . .
    getOptionsMenuItems: function(context)
    {
        return [
            this.optionMenu("Option1", "helloworld.option1"),
            "-",
            this.optionMenu("Option2", "helloworld.option2")
        ];
    },

    optionMenu: function(label, option)
    {
        var value = Firebug.getPref(Firebug.prefDomain, option);
        return {
            label: label,
            nol10n: true,
            type: "checkbox",
            checked: value,
            command: bindFixed(Firebug.setPref, this, Firebug.prefDomain, option, !value)
        };
    }
});

getOptionsMenuItems通过调用optionMenu来获得每个option,我的理解Firebug.getPref应该是获得指定选项的值,command接口是点击下拉菜单里的选项时调用的接口,这里用的bindFixed则是设置该对应下拉选项的值,对应“about:config”里的值也会随之更改。

疑问:如何删除“about:config"里的条目

实验中发现有一次加入option之后,甚至把插件卸载了,重启ff仍然可以在“about:config”里看到这些条目。如何卸载??

阅读(908) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~