Contents

Extensões

Este é um guia para fazer novas extensões para o Inkscape. Atualmente, a maioria das extensões estão disponível como scripts em python.

Tipos de extensões

Existem os seguintes tipos de extensão para o Inkscape:

  • entrada (ler um arquivo / dados)
  • saída (escrever um arquivo / dados)
  • efeito (alterar o conteúdo do documento)
  • impressão (saída para um dispositivo externo)

Implementação da extensão

Visão geral

  • Interna
    • Implementação em C++ (diretamente no código)
  • Externa
    • scripts - por exemplo python, perl ou scripts de sistema (console)
    • Transformações de XSL

Interface do Usuário e tipos de parâmetros: Arquivo de Definição de Extensão (INX)

Todas as extensões são definidas através de Arquivos de Definição de Extensão (INX) que são arquivos XML em

http://www.inkscape.org/namespace/inkscape/extension

namespace e descrição por Relax NG disponível [aqui]

Parâmetros

As extensões podem ser fornecidas com valores obtidos por meio de parâmetros facilmente definíveis. O Inkscape fornece uma GUI básica para entrada do usuário. São suportados os seguintes parâmetros:

  • int (campo para entrada de número inteiro)
  • string (campo para entrada de texto)
  • float (campo para entrada número de vírgula flutuante)
  • boolean (para caixa de seleção)
  • enum (para uma lista suspensa)
  • optiongroup (para uma lista suspensa lista ou botões de opção)
  • color (para um seletor de cores, como a caixa de diálogo de Preenchimento & Contorno)

Por uma questão de interface do Usuário, existem também os dois parâmetros seguintes que não fornecem dados para a extensão, mas alteram o GUI de entrada do usuário.

  • description (para descrições abaixo dos parâmetros)
  • notebook (para abas)

Veja também: Parâmetros INX

Estrutura

Exemplo de botão de opção

A marcação a seguir:

<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
  <_name>RadioButton example</_name>
  <id>org.inkscape.effect.radiobuttontest</id>
  <param name="radio1" type="optiongroup" _gui-text="Select option: ">
    <option value="string1">translatable string 1</option>
    <option value="string2">string 2</option>
    <option value="string3">test 3!</option>
  </param>
  <param name="radio2" type="optiongroup" _gui-text="Select second option: ">
    <option value="string11">string1</option>
    <option value="string22">string2</option>
    <option>test3!</option>
  </param>
  <effect>
    <object-type>all</object-type>
    <effects-menu>
      <submenu _name="Developer Examples"/>
    </effects-menu>
  </effect>
  ...
</inkscape-extension>

Irá resultar na criação da seguinte GUI:

Extensions-radiobutton gui example.png

i18n

Para permitir que os arquivos .inx caibam confortavelmente na infra-estrutura de i18n do Inkscape, alguns elementos e atributos XML são prefixados com o caractere de sublinhado (_) para indicar que o texto que o contém deve ser marcado para tradução.

O script da extensão: um script escrito na linguagem de programação de sua escolha

Este guia ainda não está completo. Se você gostaria de ajudar a escrevê-lo, por favor entre em contato com a equipe web do Inkscape através da lista de discussão inkscape-docs.

Enquanto informações adicionais não estiverem disponíveis aqui, por favor, dê uma olhada na pasta da sua instalação do Inkscape para obter exemplos de "extensões". Lá você pode encontrar alguns arquivos .py (predominantemente inkex.py) que fornecem algumas funcionalidades básicas (como mensagens de erro, que recebem ids dos itens selecionados, etc.) você pode criar um como sendo sua própria extensão, se você escrever em Python. É recomendável dar uma olhada em uma extensão que faz algo semelhante ao que sua nova extensão fará (por exemplo, modificar dados do caminho, gravar em um arquivo, importar um formato específico de arquivo, enviar dados para uma impressora ou plotadora), para ver como isto pode ser feito.

O usuário Neon22 do Github compilou exemplo de extensão (Python, licença do MIT, disponível no submenu 'Renderizar') para auxiliar as pessoas que querem escrever novas extensões para o Inkscape. Ele mostra e explica as opções disponíveis e pode ser usado como um modelo para copiar e colar.

Algumas informações ligeiramente mais antigas e não estruturadas também estão disponíveis em nossa Wiki:

Compartilhar sua extensão

Então você escreveu uma nova extensão do Inkscape por si mesmo, para atender suas próprias necessidades. Não seria maravilhoso se os outros, que necessitam da mesma coisa, mas não sabem programar, pudessem também usar a sua extensão e talvez dar um posicionamento à você e sugerir melhorias, ou se outros programadores pudessem se juntar a você para ajudar a melhorar a sua extensão?

Para conseguir isso, você precisará fazer o seguinte:

  • Licenciar sua extensão com a licença de um programa de código aberto, por exemplo, GPL, como o Inkscape.
  • Publicar sua extensão em um lugar onde os outros possam contribuir no desenvolvimento, ou seja, um site que permita que os desenvolvedores colaborem. Se sua extensão contém arquivos nomeados da mesma forma que outras extensões (por exemplo, README, LICENSE), considere prefixá-los com o nome de sua extensão, para que eles não sobrescrevam outros arquivos quando um usuário os copia para seu diretório de extensão.
  • Deixe os outros saberem da sua extensão, enviando-as para a sua galeria do InkSpace aqui no inkscape.org:
    • Primeiro de tudo: não se preocupe muito com a qualidade do código ou com a importância do problema que sua extensão pode ajudar a resolver. Ainda pode ser útil para alguém - ou alguém pode ajudá-lo a corrigir os problemas, quando eles souberem sobre eles.
    • Carregue seus arquivos da extensão (compactados, por exemplo, em formato zip) na categoria "Extensions":
      • Adicione uma descrição útil que permita que usuários sem conhecimento de programação entendam o que faz sua extensão, com informações sobre dependências e versões do Inkscape e sistemas operacionais com os quais você sabe que sua extensão funcionará.
      • Adicione também uma imagem de visualização em miniatura (190x190px), que ajudará as pessoas a entenderem para que serve a extensão.
      • Se aplicável, adicione um link para o local onde é feito o desenvolvimento da extensão
      • Para facilitar a classificação, seria útil para os usuários se você adicionar algumas tags (encontre uma lista de tags oficiais à direita desta página, que podem ser usadas, abaixo dos títulos 'Version', 'Extension Type' e 'Platform'). Se sua extensão faz algo que não pode ser representado por qualquer uma das tags 'Extension Type' tags, por favor nos informe, para que possamos adicionar uma que se encaixe.
      • Também preencha todos os campos no formulário de carregamento, em seguida, clique em 'Publicar'.
      • Seu envio agora estará disponível para ser baixado na página de extensões.
  • Se você estiver pronto para isso, envie uma pequena mensagem para a lista de discussão do usuário para informar às pessoas sobre a disponibilidade dessa nova extensão. Você também pode pedir um retorno.
  • Veja como os outros desfrutam de sua extensão e, se você quiser, interaja com eles para manter sua extensão atualizada e livre de erros.
  • Tente se lembrar de atualizar seus arquivos de extensão carregados no InkSpace em inkscape.org quando atualizar a extensão em seu repositório.