diff options
Diffstat (limited to 'files/pt-pt/orphaned/construir_uma_extensão/index.html')
-rw-r--r-- | files/pt-pt/orphaned/construir_uma_extensão/index.html | 228 |
1 files changed, 228 insertions, 0 deletions
diff --git a/files/pt-pt/orphaned/construir_uma_extensão/index.html b/files/pt-pt/orphaned/construir_uma_extensão/index.html new file mode 100644 index 0000000000..1123eb2bbd --- /dev/null +++ b/files/pt-pt/orphaned/construir_uma_extensão/index.html @@ -0,0 +1,228 @@ +--- +title: Construir uma Extensão +slug: orphaned/Construir_uma_Extensão +tags: + - Extensões +original_slug: Construir_uma_Extensão +--- +<h4 id="Introdu.C3.A7.C3.A3o" name="Introdu.C3.A7.C3.A3o">Introdução</h4> +<p>Este tutorial lhe dará uma visão bem básica dos passos para construir uma <a href="/pt/Extensões" title="pt/Extensões">extensão</a> - que adiciona um item na barra de status do Firefox contendo o texto "Hello, World!"</p> +<div class="note"> + <p><strong>Nota</strong> Este tutorial é voltado para o desenvolvimento de extensões para Firefox 1.5 ou 2.0. Existem outros tutoriais para o desenvolvimento extensões para versões mais antigas do Firefox.</p> +</div> +<h4 id="Ajustando_o_Ambiente_de_Desenvolvimento" name="Ajustando_o_Ambiente_de_Desenvolvimento">Ajustando o Ambiente de Desenvolvimento</h4> +<p>As extensões são empacotadas e distribuídas em arquivos ZIP, ou <a href="/en/Bundles" title="en/Bundles">Bundles</a>, arquivos com a extensão <code>xpi</code> (<em>pronunciado “zippy”</em>). A disposição do conteúdo dentro do arquivo XPI é assim:</p> +<pre class="eval">extension.xpi: + /<a href="/pt/install.rdf" title="pt/install.rdf">install.rdf</a> + <a href="#XPCOM_Components">/components/*</a> + <a href="#Application_Command_Line">/components/cmdline.js</a> + <a href="#Defaults_Files">/defaults/</a> + <a href="#Defaults_Files">/defaults/preferences/*.js</a> + /plugins/* + /chrome/ + /<a href="/pt/chrome.manifest" title="pt/chrome.manifest">chrome.manifest</a> + /<a href="/pt/Chrome_window_icons" title="pt/Chrome_window_icons">chrome/icons/default/*</a> + /chrome/content/ + +</pre> +<p>Por isso, é mais fácil dispor seus arquivos de código de uma forma similar, a menos que você queira escrever algum tipo de <a class="external" href="http://pt.wikipedia.org/wiki/Make">Makefile</a> ou <a class="external" href="http://pt.wikipedia.org/wiki/Shell_script">shell script</a> para empacotar e fechar todos os seus arquivos. Mesmo que esteja preparado para fazer isso, testar é muito mais simples se você dispuser seus arquivos desta maneira, devido a uma característica do Sistema de Add-on proporcionado a partir do Firefox 1.5.</p> +<p>Assim, vamos começar. Crie uma pasta para sua extensão em algum lugar do disco rígido, por exemplo <code>C:\extensions\myExtension\</code> ou <code>~/extensions/myExtension/</code>. Dentro desta pasta crie outra pasta chamada <code>chrome</code>, e dentro da pasta <code>chrome</code> crie outra pasta chamada <code>content</code>. (Em sistemas como o Unix você pode normalmente criar todos os três diretórios somente rodando <code>mkdir -p chrome/content</code> dentro do diretório root (raiz) da extensão.)</p> +<p>Dentro da raiz da sua pasta da extensão, ao lado da pasta <code>chrome</code>, crie dois novos arquivos de texto vazios, um chamado <code>chrome.manifest</code> e outro chamado <code>install.rdf</code>.</p> +<p>Mais ajuda no desenvolvimento de extensões pode ser encontrada na página <a class="external" href="http://kb.mozillazine.org/Setting_up_extension_development_environment">Mozillazine Knowledge Base</a>.</p> +<h4 id="Criando_o_manifesto_de_instala.C3.A7.C3.A3o" name="Criando_o_manifesto_de_instala.C3.A7.C3.A3o">Criando o manifesto de instalação</h4> +<p>Abra o arquivo chamado <code><a href="/pt/install.rdf" title="pt/install.rdf">install.rdf</a></code> que você criou no topo da pasta da sua extensão e coloque isto nele:</p> +<pre class="eval"><?xml version="1.0"?> + +<RDF xmlns="<span class="nowiki">http://www.w3.org/1999/02/22-rdf-syntax-ns#</span>" + xmlns:em="<span class="nowiki">http://www.mozilla.org/2004/em-rdf#</span>"> + + <Description about="urn:mozilla:install-manifest"> + <em:id><strong><a class="link-mailto" href="mailto:sample@example.net" rel="freelink">sample@example.net</a></strong></em:id> + <em:version><strong>1.0</strong></em:version> + <em:type>2</em:type> + + <!-- Target Application this extension can install into, + with minimum and maximum supported versions. --> + <em:targetApplication> + <Description> + <em:id><strong>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</strong></em:id> + <em:minVersion><strong>1.5</strong></em:minVersion> + <em:maxVersion><strong>2.0.0.*</strong></em:maxVersion> + </Description> + </em:targetApplication> + + <!-- Front End MetaData --> + <em:name><strong>Amostra!</strong></em:name> + <em:description><strong>Uma extensão de teste</strong></em:description> + <em:creator><strong>Seu Nome Aqui</strong></em:creator> + <em:homepageURL><strong><span class="nowiki">http://www.foo.com/</span></strong></em:homepageURL> + </Description> +</RDF> +</pre> +<ul> + <li><strong><a class="link-mailto" href="mailto:sample@example.net" rel="freelink">sample@example.net</a></strong> - o ID da extensão. Este é um valor que você usa para identificar sua extensão em formato de endereço de e-mail (note que isto não precisa ser o <em>seu</em> e-mail). Faça isto único. Você pode também usar um GUID. NOTA: Este parametro PRECISA estar no formato de um endereço de e-mail, no entanto NÃO precisa ser um e-mail válido.</li> + <li>Especifique <code><em:type>2</em:type></code> -- o 2 declara que isto instala uma extensão. Se você for instalar um tema o número será 4 (veja <a href="/en/Install_Manifests#type" title="en/Install_Manifests#type">Install Manifests#type</a> para outros tipos de código).</li> + <li><strong>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</strong> - ID de aplicação Firefox.</li> + <li><strong>1.5</strong> - a versão mínima do Firefox que você está dizendo que esta extensão poderá trabalhar. Coloque isto como a versão mínima, você cometerá e testará bugs (problemas) com isso.</li> + <li><strong>2.0.0.*</strong> - a versão máxima do Firefox que você está dizendo que esta extensão poderá trabalhar. Coloque isto com a versão mais nova disponível atualmente! Neste caso, "2.0.0.*" indica que a extensão trabalha com versões do Firefox 2.0.0.0 até 2.0.0.x.</li> +</ul> +<p>Extensões desenhadas para trabalhar com o Firefox 1.5.0.x devem ser colocadas no máximo com a versão "1.5.0.*".</p> +<p>Veja <a href="/en/Install_Manifests" title="en/Install_Manifests">Install Manifests</a> para uma lista completa das propriedades requeridas e opcionais.</p> +<p>Salve o arquivo.</p> +<h4 id="Extendendo_o_navegador_com_XUL" name="Extendendo_o_navegador_com_XUL">Estendendo o navegador com XUL</h4> +<p>A interface do usuário do Firefox é escrita em XUL e JavaScript. <a href="/pt/XUL" title="pt/XUL">XUL</a> é uma gramática XML que proporciona widgets como botões, menus, barras de ferramentas, árvores, etc. As ações do usuário são limitadas à funcionalidade usando JavaScript.</p> +<p>Para extender o navegador, nós modificamos partes da UI do navegador adicionando ou modificando widgets. Nós adicionamos widgets inserindo novos elementos DOM XUL na janela do navegador, e os modificamos utilizando scripts e anexando manipuladores de evento.</p> +<p>O navegador é implementado por um arquivo XUL chamado <code>browser.xul</code> (<code>$FIREFOX_INSTALL_DIR/chrome/browser.jar</code> que contém <code>content/browser/browser.xul</code>). Em browser.xul nós podemos encontrar a barra de status, semelhante a isso:</p> +<pre class="eval"><statusbar id="status-bar"> + ... <statusbarpanel>s ... +</statusbar> +</pre> +<p><code><statusbar id="status-bar"></code> é o "ponto de fusão" para a sobreposição XUL (XUL Overlay).</p> +<h5 id="Sobreposi.C3.A7.C3.A3o_.28overlay.29_XUL" name="Sobreposi.C3.A7.C3.A3o_.28overlay.29_XUL">Sobreposição (overlay) XUL</h5> +<p><a href="/en/XUL_Overlays" title="en/XUL_Overlays">XUL Overlays</a> é um modo de anexar outras widgets da UI a um documento XUL durante a execução. Um Overlay XUL é um arquivo .xul que especifica fragmentos de XUL para inserir em pontos específicos de junção dentro de um documento "master". Estes fragmentos podem especificar widgets para serem inseridas, removidas ou modificadas.</p> +<p><strong>Exemplo de Documento de Sobreposição XUL</strong></p> +<pre class="eval"><?xml version="1.0"?> +<overlay id="sample" + xmlns="<span class="nowiki">http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul</span>"> + <statusbar id="<strong>status-bar</strong>"> + <statusbarpanel id="my-panel" label="Hello, World"/> + </statusbar> +</overlay> +</pre> +<p>A <code><statusbar></code> chamada <code><strong>status-bar</strong></code> especifica o "ponto de junção" dentro da janela do navegador a que nós queremos anexar.</p> +<p>O sub-item de <code><statusbarpanel></code> é um novo widget que nós queremos para inserir dentro do ponto de junção.</p> +<p>Pegue esta amostra de código acima e salve-a em um arquivo chamado <code><strong>sample.xul</strong></code> dentro da pasta <code>chrome/content</code> que você criou.</p> +<p>Para mais informaçõs sobre junção de widgets e modificação da interface de usuário usando Overlays, veja abaixo.</p> +<h4 id="URLs_Chrome" name="URLs_Chrome">URLs Chrome</h4> +<p>Arquivos XUL são parte do "<a href="/en/Chrome_Registration" title="en/Chrome_Registration">Chrome Packages</a>" - pacotes dos componentes da interface de usuário que são carregados via URLs <code>chrome://</code>. Melhor que carregar o navegador pelo disco usando um URL <code>file://</code> (a localização do Firefox no sistema pode mudar de plataforma para plataforma e sistema para sistema), desenvolvedores Mozilla surgiram com uma solução para criar URLs para conteúdo XUL em que a aplicação instalada sabe como fazer.</p> +<p>A janela do navegador é: <code><a class="external" rel="freelink">chrome://browser/content/browser.xul</a></code>. Tente digitar esta URL na barra de localização do Firefox!</p> +<p>Chrome URLs consistem em diversos componentes:</p> +<ul> + <li>Primeiramente, o <strong>esquema URL</strong> (<code>chrome</code>) que diz à biblioteca de rede do Firefox que isto é um Chrome URL. Isto indica que o conteúdo da URL deve ser manipulado como um (<code>chrome</code>). Compare (<code>chrome</code>) a (<code>http</code>) que diz ao Firefox para tratar a URL como uma página da web.</li> + <li>Secundariamente, um nome de pacote (no exemplo acima, <code><strong>browser</strong></code>) que indentifica o pacote dos componentes da interface de usuário. Isto deve ser único para sua aplicação sempre que possível para evitar colisões entre extensões.</li> + <li>Terciariamente, o tipo de dados é requisitado. Existem três tipos: <code>content</code> (XUL, JavaScript, XBL bindings, etc. que formam a estrutura e o comportamento de uma aplicação UI), <code>locale</code> (DTD, arquivos .properties, etc. que contêm strings para as <a href="/pt/Localização" title="pt/Localização">localizações</a> UI), e <code>skin</code> (CSS e imagens que formam o <a href="/pt/Temas" title="pt/Temas">tema</a> da UI)</li> + <li>Finalmente, o trajeto de um arquivo para carregar.</li> +</ul> +<p>Então, <code><a class="external" rel="freelink">chrome://foo/skin/bar.png</a></code> carrega o arquivo <code>bar.png</code> do tema de <code>foo</code> na seção <code>skin</code>.</p> +<p>Quando você carrega conteúdo usando um Chrome URL, Firefox usa o Registro Chrome para traduzir estas URLs no atual arquivo de código no disco (ou em pacotes JAR).</p> +<h4 id="Criando_um_Manifesto_Chrome" name="Criando_um_Manifesto_Chrome">Criando um Manifesto Chrome</h4> +<p>Para mais informações sobre Manifestos Chrome e as propriedades que eles suportam, veja a referência <a href="/en/Chrome_Registration" title="en/Chrome_Registration">Chrome Manifest</a>.</p> +<p>Abra o arquivo chamado <code><strong>chrome.manifest</strong></code> que você criou ao lado do diretório <code>chrome</code> na raiz da pasta de código da sua extensão.</p> +<p>Adicione este código:</p> +<pre class="eval">content sample chrome/content/ +</pre> +<p>(<strong>Não se esqueça da barra, "<code>/</code>"!</strong> Sem ela, a extensão não será registrada.) <span class="comment">Nota: Tenha certeza de ter digitado tudo em letras minúsculas para o nome do pacote ("sample") no Firefox/Thunderbird 1.5 não há suporte à letras maiúsculas. Aparentemente haverá na versão 2.</span></p> +<p>Isto especifica o:</p> +<ol> + <li>tipo do material dentro do pacote chrome</li> + <li>nome do pacote chrome</li> + <li>localização dos arquivos do pacote chrome</li> +</ol> +<p>Então, esta linha diz que para o pacote chrome <strong>sample</strong>, nós podemos achar estes arquivos <strong>content</strong> (de conteúdo) na localização <code>chrome/content</code> onde está o caminho relativo à localização do <code>chrome.manifest</code>.</p> +<p>Note que os arquivos de conteúdo, localização e pele precisam estar no interior das pastas chamadas content (conteúdo), locale (localização) e skin (pele) dentro do subdiretório <code>chrome</code>.</p> +<p>Salve o arquivo. Quando você rodar o Firefox com sua extensão, (depois neste tutorial), isto irá registrar o pacote chrome.</p> +<h4 id="Registrando_uma_Sobreposi.C3.A7.C3.A3o" name="Registrando_uma_Sobreposi.C3.A7.C3.A3o">Registrando uma Sobreposição</h4> +<p>Você precisa do Firefox para fundir da sua sobreposição com a janela do navegador sempre que ela for exibida. Então adicione esta linha ao seu arquivo <code>chrome.manifest</code>:</p> +<pre class="eval">overlay <a class="external" rel="freelink">chrome://browser/content/browser.xul</a> <a class="external" rel="freelink">chrome://sample/content/sample.xul</a> +</pre> +<p>Isto dirá ao Firefox para fundir <code>sample.xul</code> em <code>browser.xul</code> quando <code>browser.xul</code> for carregado.</p> +<h4 id="Teste" name="Teste">Teste</h4> +<p>Primeiro, nós precisamos falar ao Firefox sobre a sua extensão. Nos velhos e maus dias do Firefox 1.0, isto significava empacotar sua extensão como um XPI e instalar através da interface de usuário, na qual havia uma dificuldade real. Agora é muito mais simples.</p> +<ol> + <li>Abra sua <a class="external" href="http://kb.mozillazine.org/Profile_folder">Profile Folder</a></li> + <li>Abra a pasta <strong>extensions</strong> (crie-a se ela não existir)</li> + <li>Crie um novo arquivo de texto, e coloque o caminho para a pasta da extensão dentro, e.g. <code>C:\extensions\myExtension\</code> ou <code>~/extensions/myExtension</code>. Salve o arquivo com o id da sua extensão como seu nome, e.g. <code><a class="link-mailto" href="mailto:sample@foo.net" rel="freelink">sample@foo.net</a></code>.</li> +</ol> +<p>Agora você está pronto para testar sua extensão!</p> +<p>Inicie o Firefox. O Firefox irá detectar o link para o diretório da sua extensão e instalará a extensão. Quando a janela do navegador aparecer você poderá ver o texto "Hello, World!" ao lado direito do painel da barra de estado.</p> +<p>Você pode agora retornar e fazer mudanças no arquivo .xul, fechar e reiniciar o Firefox, e elas aparecerão. <span class="comment">Isto realmente não combina com a extensão descrita e confunde as pessoas. -Nickolay CENTER> Image:Helloworld_tools_menu.PNG Image:Helloworld_extensions_wnd.PNG </CENTER</span></p> +<h4 id="Pacote" name="Pacote">Pacote</h4> +<p>Agora que sua extensão trabalha, você pode empacotá-la (<a href="/en/Extension_Packaging" title="en/Extension_Packaging">package</a>) para distribuição e instalação.</p> +<p>Empacote o <strong>conteúdo</strong> da pasta da extensão (não a pasta da extensão), e renomeie o arquivo empacotado para ter uma extensão .xpi. No Windows XP, você pode fazer isto facilmente selecionando todos os arquivos e sub pastas na pasta da sua extensão, com um clique do botão direito e a escolha "Enviar para -> Pasta Comprimida". Um arquivo .zip será criado para você. Somente renomeie-o e pronto!</p> +<p>No Mac OS X, você pode com um clique do botão direito sobre a pasta da extensão escolher "Criar Arquivo de..." para fazer o arquivo .zip. No entanto, desde que o Mac OS X adiciona arquivos escondidos à pastas para ordenar os metadados do arquivo, você deve em vez disso usar o Terminal, deletar os arquivos escondidos (cujos nomes começam com um período), e então usar o comando <code>zip</code> na linha de comando para criar o arquivo .zip.</p> +<p>No Linux, você pode do mesmo modo usar a ferramenta Zip pela linha de comando.</p> +<p>Se você tem a extensão 'Extension Builder' instalada ela pode compilar o arquivo .xpi para você (Ferramentas -> Desenvolvimento de Extensões -> Construtor de Extensões). Meramente navegue até o diretório onde sua extensão está (install.rdf etc.), e clique no botão Construir Extensão. Esta extensão possui várias ferramentas para tornar o desenvolvimento mais fácil.</p> +<p>Agora atualize o arquivo .xpi no seu servidor, assegurando-se que ele serve como <code>application/x-xpinstall</code>. Você pode ligar para isto e permitir as pessoas baixarem e instalarem-na no Firefox. Para os propósitos de somente testar nosso arquivo .xpi nós podemos apenas arrastá-lo até a janela de extensões via Ferramentas -> Complementos -> Extensões.</p> +<h5 id="Usando_addons.mozilla.org" name="Usando_addons.mozilla.org">Usando addons.mozilla.org</h5> +<p>Mozilla Update é um site de distribuição onde você pode hospedar sua extensão de graça. Sua extensão irá ser hospedada na rede de espelho Mozilla para garantir seu download mesmo quando se tornar mais popular. O site Mozilla também proporciona aos usuários uma instalação simples, e colocará automaticamente suas versões mais novas disponíveis para os usuários das suas versões já existentes quando você atualizá-las. Em adição o Mozilla Update permite aos usuários comentar e proporcionar avaliações da sua extensão. Isto é altamente recomendado se você usa o Mozilla Update para distribuir suas extensões!</p> +<p>Visite <a class="external" href="http://addons.mozilla.org/developers/" rel="freelink">http://addons.mozilla.org/developers/</a> para criar uma conta e começar a distribuir suas extensões!</p> +<p><em>Nota:</em> Sua extensão será passada rapidamente e mais baixada, se você tiver uma boa descrição e algumas fotos da extensão em ação.</p> +<h5 id="Registrando_Extens.C3.B5es_no_Registro_do_Windows" name="Registrando_Extens.C3.B5es_no_Registro_do_Windows">Registrando Extensões no Registro do Windows</h5> +<p>No Windows, informação sobre extensões pode ser adicionada ao registro, e as extensões serão automaticamente "colhidas" na próxima vez que a aplicação iniciar. Isto permite que os instaladores de aplicação adicionem facilmente os ganchos de integração como extensões. Veja <a href="/en/Adding_Extensions_using_the_Windows_Registry" title="en/Adding_Extensions_using_the_Windows_Registry">Adding Extensions using the Windows Registry</a> para mais informações.</p> +<h4 id="Mais_sobre_Sobreposi.C3.A7.C3.B5es_XUL" name="Mais_sobre_Sobreposi.C3.A7.C3.B5es_XUL">Mais sobre Sobreposições XUL</h4> +<p>Além de adicionar widgets UI ao ponto de fusão, você pode usar fragmentos XUL dentro da sobreposição para:</p> +<ul> + <li>Modificar atributos no ponto de fusão, e.g. <code><statusbar id="status-bar" hidden="true"/></code> (esconde a barra de estado)</li> + <li>Remove o ponto de fusão do documento mestre, e.g. <code><statusbar id="status-bar" removeelement="true"/></code></li> + <li>Controla a posição das widgets inseridas:</li> +</ul> +<pre class="eval"><statusbarpanel position="1" .../> + +<statusbarpanel insertbefore="other-id" .../> + +<statusbarpanel insertafter="other-id" .../> +</pre> +<h4 id="Criando_Novos_Componentes_na_Interface_de_Usu.C3.A1rio" name="Criando_Novos_Componentes_na_Interface_de_Usu.C3.A1rio">Criando Novos Componentes na Interface de Usuário</h4> +<p>Você pode criar suas próprias janelas e caixas de diálogo em arquivos .xul separados, proporcionar funcionalidades pela implementação de ações de usuário em arquivos .js, usando métodos DOM para manipular widgets UI. Você pode usar regras de estilo em arquivos .css para anexar imagens, configurar cores, etc.</p> +<p>Veja a documentação <a href="/pt/XUL" title="pt/XUL">XUL</a> para mais recursos para desenvolvedores XUL.</p> +<h4 id="Arquivos_Padr.C3.A3o" name="Arquivos_Padr.C3.A3o">Arquivos Padrão</h4> +<p>Arquivos padrão que você usa para escalar um perfil de usuário que deve ser colocado em <code>defaults/</code> sob a raiz da pasta da sua extensão. Preferências padrão em arquivos .js devem ser armazenadas em <code>defaults/preferences/</code> — quando você as coloca aqui elas são automaticamente carregadas pelas preferências do sistema do Firefox quando ele é iniciado, então você pode acessá-las usando o <a href="/en/Preferences_API" title="en/Preferences_API">Preferences API</a>.</p> +<h4 id="Componentes_XPCOM" name="Componentes_XPCOM">Componentes XPCOM</h4> +<p>O Firefox suporta componentes <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> nas extensões. Você pode criar seus próprios componentes facilmente em JavaScript ou em C++ (usando o <a href="/en/Gecko_SDK" title="en/Gecko_SDK">Gecko SDK</a>).</p> +<p>Coloque todos os seus arquivos .js ou .dll no diretório <code>components</code> — eles são automaticamente registrados na primeira vez que o Firefox rodar depois que sua extensão for instalada.</p> +<p>Para mais informações, veja os livros <a href="/en/How_to_Build_an_XPCOM_Component_in_Javascript" title="en/How_to_Build_an_XPCOM_Component_in_Javascript">How to Build an XPCOM Component in Javascript</a> e <a href="/en/Creating_XPCOM_Components" title="en/Creating_XPCOM_Components">Creating XPCOM Components</a>.</p> +<h5 id="Aplica.C3.A7.C3.A3o_de_Linha_de_Comando" name="Aplica.C3.A7.C3.A3o_de_Linha_de_Comando">Aplicação de Linha de Comando</h5> +<p>Um dos possíveis usos dos componentes customizados XPCOM é adicionar um manipulador de linha de comando para o Firefox ou Thunderbird. Você pode usar esta técnica para rodar sua extensão como uma aplicação:</p> +<pre class="eval"> firefox.exe -myapp +</pre> +<p><span class="comment">Devo mover as partes úteis disto para a página Command Line. -Nickolay Isto é feito adicionando um componente que contém a função... function NSGetModule(comMgr, fileSpec) { return myAppHandlerModule; } Esta função roda pelo Firefox cada vez que ele é iniciado. O Firefox registra o myAppHandlerModule's chamando-o 'registerSelf()'. Então isto obtém a fábrica de manipulador myAppHandlerModule's via 'getClassObject()'. A fábrica de manipulador é usada para criar a manipulação usando isto 'createInstance(). Finalmente, a manipulação 'handle(cmdline)' processa a linha de comando cmdline's handleFlagWithParam() e handleFlag().</span> Veja <a href="/en/Chrome/Command_Line" title="en/Chrome/Command_Line">Chrome: Command Line</a> e a <a class="external" href="http://forums.mozillazine.org/viewtopic.php?t=365297">discussão no fórum</a> para detalhes (em inglês).</p> +<h4 id="Localiza.C3.A7.C3.A3o" name="Localiza.C3.A7.C3.A3o">Localização</h4> +<p>Para suportar mais que uma linguagem, você deve separar as strings do seu conteúdo usando <a href="/en/XUL_Tutorial/Localization" title="en/XUL_Tutorial/Localization">entities</a> e <a href="/en/XUL_Tutorial/Property_Files" title="en/XUL_Tutorial/Property_Files">string bundles</a>. É muito mais fácil fazer isto se você estiver desenvolvendo sua extensão do que retornar fazer isto mais tarde!</p> +<p>Informação de localização é armazenada no diretório local (locale) da extensão. Por exemplo, para adicionar um local à nossa extensão de amostra, crie um diretório chamado "locale" em chrome (onde o diretório "content está localizado) e adicione a linha seguinte ao arquivo chrome.manifest:</p> +<pre class="eval">locale sample sampleLocale chrome/locale/ +</pre> +<p>Para criar valores atributos localizáveis em XUL, você colocar os valores em um arquivo <code>.ent</code> (ou um <code>.dtd</code>), o qual deve ser colocado no diretório locale e ser como este:</p> +<pre class="eval"><!ENTITY button.label "Click Me!"> +<!ENTITY button.accesskey "C"> +</pre> +<p>E depois incluí-lo no topo do seu documento XUL (mas embaixo de '<?xml version"1.0"?>') assim:</p> +<pre class="eval"><!DOCTYPE <strong>window</strong> SYSTEM "<a class="external" rel="freelink">chrome://packagename/locale/filename.ent</a>"> +</pre> +<p>Onde <code><strong>window</strong></code> é o valor <code><a href="/En/DOM/Node.localName" title="En/DOM/Node.localName">localName</a></code> do elemento raiz do documento XUL, e o valor da propriedade <code>SYSTEM</code> é o chrome URL para o arquivo de entidade. Para a nossa extensão de amostra, o elemento raiz é <code><strong>overlay</strong></code>.</p> +<p>Para usar as entidades, modifique seu XUL para isto:</p> +<pre class="eval"><button label="&button.label;" accesskey="&button.accesskey;"/> +</pre> +<p>O Registro Chrome assegurará que o arquivo da entidade seja carregado do pacote de localização correspondente ao local selecionado.</p> +<p>Para strings que você usa no script, crie um arquivo .properties, um arquivo de texto que tem uma string em cada linha, neste formato:</p> +<pre class="eval">key=value +</pre> +<p>e então use as etiquetas <code><a href="/en/nsIStringBundleService" title="en/nsIStringBundleService">en:nsIStringBundleService</a></code>/<code><a href="/en/nsIStringBundle" title="en/nsIStringBundle">en:nsIStringBundle</a></code> ou <code><a class="external" href="http://xulplanet.com/references/elemref/ref_stringbundle.html"><stringbundle></a></code> para carregar os valores dentro do script.</p> +<h4 id="Entendendo_o_navegador" name="Entendendo_o_navegador">Entendendo o navegador</h4> +<p>Use o <a href="/en/DOM_Inspector" title="en/DOM_Inspector">DOM Inspector</a> (não é parte da instalação <strong>padrão</strong> do Firefox, você precisa reinstalá-lo pelo caminho da instalação customizada e escolher <strong>Ferramentas de Desenvolvedor</strong> se não houver um item "DOM Inspector" no menu de Ferramentas do seu navegador) para inspecionar a janela do navegador ou qualquer outra janela XUL que você precisar extendê-la.</p> +<p>Use o botão esquerdo do mouse para achar o nó no topo esquerdo da barra de ferramentas do DOM Inspector, clicando em um nó ele é selecionado e exibe o XUL na janela ao lado. Quando você faz isto a visão da árvore de hierarquia do DOM Inspector irá pular para o nó que você clicou.</p> +<p>Use o painel do lado direito do DOM Inspector para descobrir pontos de fusão com ids que você pode usar para inserir seus elementos de sobreposição. Se você não pode descobrir um elemento com um id que você pode fundir, você pode necessitar anexar um script em sua sobreposição e inserir seus elementos quando o evento <code>load</code> for exibido na janela mestre XUL.</p> +<h4 id="Depurando_extens.C3.B5es" name="Depurando_extens.C3.B5es">Depurando extensões</h4> +<p><strong>Ferramentas Analíticas para Depurar</strong></p> +<ul> + <li>O <a href="/en/DOM_Inspector" title="en/DOM_Inspector">DOM Inspector</a> — inspeciona atributos, estrutura DOM, regras no estilo CSS que estão em efeito (e.g. descubra porque suas regras de estilo não aparecem trabalhando por um elemento — uma ferramenta inestimável!)</li> + <li><a href="/en/Venkman" title="en/Venkman">Venkman</a> — configura pontos de parada em JavaScript e inspeciona pilhas de chamadas.</li> + <li><code><a href="/En/Core_JavaScript_1.5_Reference/Functions_and_function_scope/arguments/callee" title="En/Core_JavaScript_1.5_Reference/Functions_and_function_scope/arguments/callee">arguments.callee</a>.<a href="/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/caller" title="en/Core_JavaScript_1.5_Reference/Global_Objects/Function/caller">caller</a></code> em JavaScript — acessa a função de pilhas de chamadas.</li> +</ul> +<p><strong>Depuração printf</strong></p> +<ul> + <li>Rode o Firefox com <code>-console</code> na linha de comando e use <code><a href="/en/DOM/window.dump" title="en/DOM/window.dump">dump</a>("string")</code> (veja o link para detalhes).</li> + <li>Use <code><a href="/en/nsIConsoleService" title="en/nsIConsoleService">en:nsIConsoleService</a></code> para logar ao console JavaScript.</li> +</ul> +<p><strong>Depuração avançada</strong></p> +<ul> + <li>Rode uma depuração do Firefox construída e configure pontos de parada no próprio Firefox ou em componentes C++. Para o desenvolvedor com experiência, este é freqüentemente a maneira mais rápida de diagnosticar o problema. Veja <a href="/En/Developer_Guide/Build_Instructions" title="En/Developer_Guide/Build_Instructions">Build Documentation</a> e <a href="/pt/Desenvolvimento_Mozilla" title="pt/Desenvolvimento_Mozilla">Desenvolvimento Mozilla</a> para mais informações.</li> + <li>Veja <a href="/en/Debugging_a_XULRunner_Application" title="en/Debugging_a_XULRunner_Application">Debugging a XULRunner Application</a> para mais tipos de ajuda.</li> +</ul> +<h3 id="Come.C3.A7o_r.C3.A1pido" name="Come.C3.A7o_r.C3.A1pido">Começo rápido</h3> +<p>Você pode usar a ferramenta online <a class="external" href="http://ted.mielczarek.org/code/mozilla/extensionwiz/">Extension Wizard</a> para gerar uma simples extensão para trabalhar junto.</p> +<p>Um <a class="external" href="http://mozilla.doslash.org/stuff/helloworld.zip">Hello World extension</a> similar ao que você pode gerar com o Extension Wizard é explicado linha por linha em <a class="external" href="http://kb.mozillazine.org/Getting_started_with_extension_development">outro tutorial do MozillaZine Knowledge Base</a>.</p> +<h3 id="Informa.C3.A7.C3.B5es_adicionais" name="Informa.C3.A7.C3.B5es_adicionais">Informações adicionais</h3> +<ul> + <li><a href="/pt/FAQ_Extensões" title="pt/FAQ_Extensões">FAQ Extensões</a></li> + <li><a href="/pt/Extensões" title="pt/Extensões">Extensões</a></li> +</ul> |