Complementos

Adicionar um item de menu ao Firefox

Para seguir este tutorial você precisará ter instalado o SDK e aprendido o básico do cfx.

Se vocé estiver usando jpm ao invés de cfx, o método para usar módulos de terceiros é diferente, e você deve ler a versão jpm ao invés deste guia.

O SDK não tem ainda uma API para adicionar novos itens de menu ao Firefox. Mas é extensível por design, então qualquer um pode construir e publicar módulos para desenvolvedores de add-on usar. Felizmente, Erik Vold escreveu um módulo menuitems que nos permite adicionar itens de menu.

Este tutorial tem dupla função. Ele descreve o método geral para usar um externo, módulo de terceiro em seu add-on, e ele descreve como adicionar um item de menu usando o módulo menuitems em especial.

Primeiro, crie um novo add-on. Crie um diretório chamado "clickme" onde você quiser, navegue para ele e execute cfx init.

mkdir clickme
cd clickme
cfx init

A estrutura de diretório de costume será criada:

  • clickme
    • data
    • lib
      • main.js
    • package.json
    • tests
      • test-main.js
 

Inslatando menuitems

Crie um diretório em "clickme" chamado "packages". Baixe o pacote menuitems de https://github.com/mykmelez/menuitems-jplib e extrai ele dentro do diretório "packages" que você criou:

mkdir packages
cd packages
tar -xf ../erikvold-menuitems-jplib-d80630c.zip

Dependências de Módulo

Se os módulos de terceiros dependem de módulos SDK, você pode usá-los imediatamente, mas se eles dependem de módulos de terceiros, você terá de instalar essas dependências também.

No diretório principal do pacote (menuitems) você encontrará um arquivo chamado "package.json". Abra ele e procure por uma entrada chamada "dependencies". A entrada para o pacote menuitems é:

"dependencies": ["api-utils", "vold-utils"]

Isso nos diz que nós precisamos instalar o pacote vold-utils, que nós podemos fazer baixando ele de https://github.com/mykmelez/vold-utils-jplib e adicionando ele ao diretório packages com menuitems. Veja também api-utils Docs(UtilsAPI).

Usando menuitems

A documentação para o módulo menuitems nos diz para criar um item de menu usando MenuItem(). Das opções aceitas pelo MenuItem(), nós usaremos este conjunto mínimo:

  • id: identificado para este item de menu
  • label: texto para mostrar no item
  • command: função chamada quando o usuário seleciona o item
  • menuid: identificador para o elemento pai do item
  • insertbefore: identificador para o item anterior àquele que nós queremos que o item apareça
var menuitem = require("menuitems").Menuitem({
  id: "clickme",
  menuid: "menu_ToolsPopup",
  label: "Click Me!",
  onCommand: function() {
    console.log("clicked");
  },
  insertbefore: "menu_pageInfo"
});
 

Próximo, nós temos que declarar nossa dependência do pacote menuitems. No package.json de nosso add-on adicionamos a linha:

"dependencies": "menuitems"

Observe que devido ao bug 663480, se você adicionar uma linha dependencies ao package.json, e você usar qualquer módulo do SDK, então você deve também declarar sua dependência naquele pacote embutido, como isto:

"dependencies": ["menuitems", "addon-sdk"]

Agora terminamos. Execute o add-on e você verá o novo item aparecer no menu de Ferramentas: selecione ele e você verá a info: clicked aparecer no console.

Cuidados

Módulos de terceiros são uma ótima forma de usar características não suportadas diretamente pelo SDK, mas porque módulos de terceiros usam APIs de nível baixo, eles podem quebrar quando forem lançadas novas versões do Firefox.

 

Etiquetas do documento e colaboradores

Etiquetas: 
 Última atualização por: Pheanor,