Inkscape Brasil

Versão Estável 0.46 Baixe Agora!

Tópicos Pais: Extensões » ComoExtender

Detalhes sobre o arquivo INX

Intro

Está perdido? Talvêz você queira saber Como Fazer Extensões para o Inkscape.

Um arquivo INX é um XML que define a extensão para o Inkscape e deve seguir essa estrutura:

 <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
   <_name>{Nome Amigável da Extensão}</_name>
   <id>{org.domain.sub-domain.extension-name}</id>
     <dependency type="executable"
                 location="[extensions|{outro local}]">{arqivo dependencia}</dependency>
     <param name="{nome-do-argumeto}" type="[int|string|boolean|...]"
            min="{number}" max="{number}"
            _gui-text="{Nome Amigável do Argumento}">{valor padrão}</param>
   <effect>
     <object-type>[all|{tipo do elemento}]</object-type>
     <effects-menu>
       <submenu _name="{Nome do Grupo da Extensão}"/>
     </effects-menu>
   </effect>
   <script>
     <command reldir="extensions"
              interpreter="[python|perl|bash|{outro}]">{program}.{ext}</command>
   </script>
 </inkscape-extension>


Como diria Jack, vamos por partes

A tag raiz:

 <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
 ...
 </inkscape-extension>
Sendo o INX um dialeto baseado em XML, é obrigado a ter uma tag envolvendo todas as tags do documento. Ela não recebe atributos, portanto ela está aí apenas para que o XML seja interpretável.

Batizando a extensão:

   <_name>{Nome Amigável da Extensão}</_name>
A tag <_name> é prefixada com "_" (sublinhado) para que o intltool perceba que se trata de um valor localizável. Sendo assim, se você pretende publicar sua extensão, dê nomes em inglês para a extensão. Dessa forma ferramentas de tradutores encontrarão esses valores que poderão ser traduzidos para qualquer língua.

O CPF da extensão:

   <id>{org.domain.sub-domain.extension-name}</id>
Esse id deve ser único. Mesmo que sua extensão faça quase o mesmo que outra e atá tenha o mesmo nome.

Dependencias:

     <dependency type="executable"
                 location="[extensions|{outro local}]">{arqivo dependencia}</dependency>
Adicione uma tag <dependency> para cada dependencia de sua extensão. Caso falte uma a extensão não será disponibilizada para o usuário. É importante adicionar essa informação corretamente, porque é muito decepcionante tentar usar uma extensão que "quebra" em qualquer caso.

Attributos:

Paramentros para os efeitos:

     <param name="{nome-do-argumeto}" type="[int|float|string|boolean|optiongroup|description|enum|notebook]"
            min="{number}" max="{number}"
            _gui-text="{Nome Amigável do Argumento}">{valor padrão}</param>
Os parametros são apresentados ao usuário por uma janela de diálogo criada pelo Inkscape e serão enviados como argumentos para a extensão no formato --nome-do-argumeto=valor.

Atributos:

Definindo uma extensão de efeito:

   <effect>
      ...
   </effect>
Não sei porque as tags de parametro não ficam aqui dentro...

Atributos:

Quem eu enfeitiço :-):

     <object-type>[all|{tipo do elemento}]</object-type>
Esse efeito pode ser usado em qualquer elemento ou só em certo tipo? A idéia é que o efeito fique desabilitado se um elemento tratável pelo efeito não estiver selecionado, mas essa funcionalidade ainda não foi adicionada (versão 0.44).

Onde o efeito se encaixa:

     <effects-menu>
       <submenu _name="{Nome do Grupo da Extensão}"/>
     </effects-menu>
Indique a que grupo seu efeito pertence para facilitar a vida do usuário.

Script:

   <script>
      ...
   </script>

Dentro de <script> você adiciona obrigatóriamente <command> e, se quiser, adiciona quantos <helper_extension> e <check> achar interessante.

Faça acontecer:

     <command reldir="[extensions|path|plugins|absolute]"
              interpreter="[python|perl|bash|{outro}]">{program}.{ext}</command>
Agora que vem o interessante. Com essa tag o Inkscape sabe o que deve executar para que as coisas aconteção.

Atributos:

Trabalhe com outra extensão:

     <helper_extension>{id de outra extensão}</helper_extension>
(apenas para extensões de input e output)

Teste antes de executar:

     <check reldir="[absolute|path|extensions|plugins]">{executável}</check>
(apenas para extensões de input e output)

Adicionando Grupo Rádio

As vezes é interessante restringir uma parâmetro a um pequeno grupo de valores, neste caso podemos usar o parametro de tipo optiongroup que cria um grupo de botões rádio e adicionar a este as opções que definem a coleção fixa de valores. Veja o exemplo:

  <param name="color-channel" type="optiongroup" _gui-text="Color Channel">
    <_option value="R">Red</_option>
    <_option value="G">Green</_option>
    <_option value="B">Blue</_option>
  </param>

Adicionando Combo-Box

Em outros casos, precisamos de um grupo pré-definido de valores, mas não se apresentam bem em um grupo de rádio, neste caso podemos usar o parametro de tipo enum que cria um combo-box e adicionar a este os itens que definem a coleção fixa de valores. Veja o exemplo:

  <param name="color-channel" type="enum" _gui-text="Color Channel">
    <_item value="R">Red</_item>
    <_item value="G">Green</_item>
    <_item value="B">Blue</_item>
  </param>
Neste caso se o usuário selecionar a opção "Green" o Inkscape repassará o parâmetro --color-channel=Green para o efeito.

Criando Abas

Parametros de Efeitos - Testando Abas Caso seu efeito suporte muitos parametros, você pode separar sub-grupos de parâmetros em abas para ajudar o entendimento do usuário. Veja o exemplo:

  <param name="tab" type="notebook">
    <page name="tabA" _gui-text="Tab A">
      <param name="pA1" type="string" _gui-text="Param A1"></param>
      <param name="pA2" type="string" _gui-text="Param A2"></param>
    </page>
    <page name="tabB" _gui-text="Tab B">
      <param name="pB1" type="string" _gui-text="Param B1"></param>
      <param name="pB2" type="string" _gui-text="Param B2"></param>
      <param name="pB3" type="string" _gui-text="Param B3"></param>
    </page>
  </param>


create new tag
rev 6 em 10 Mar 2009 por AurelioAHeckert
Editar Anexar Versões Mais...

Todo material do sítio Inkscape Brasil é propriedade do grupo Inkscape Brasil e pode ser reproduzido livremente, desde que permaneça livre e a fonte seja citada, seguindo os termos da licença Creative Commons (by-sa).

Inkscape é um Software Livre, distribuido sobre Termos GNU-GPL.

eXTReMe Tracker
Inkscape - Open Source vector graphics editor SVG - Scalable Vector Graphics TableLess - Coerência, Simplicidade e Acessibilidade no código HTML Esse documento é XHTML 1.0 Valido! Esse documento contém CSS-2 Valido! Debian - GNU/Linux TWiki - Ambiente Web Colaborativo Colivre - Cooperativa de Tecnologias Livres