<appendix id="plugin-tools">
<title
>Ferramentas em 'Plugins'</title>

<indexterm zone="plugin-tools">
  <primary
>'plugins'</primary
></indexterm>

<para
>O &kdevelop; contém uma grande quantidade de pequenas ferramentas que o ajudam a desempenhar certas tarefas. A maioria delas está implementada sob a forma de 'plugins'. Isto significa que, se não necessitar de um 'plugin', podê-lo-á desactivar.</para>
<para
>Isto também significa que, se está à procura de uma determinada funcionalidade que deveria lá estar e não está, então é porque provavelmente está implementada num 'plugin' e este está desactivado. Por exemplo, no menu de ficheiros, existe um menu de Abertura Rápida, se estiver activo na janela de Projecto - Opções do Projecto. </para>
 
<para
>Tecnicamente, os 'plugins' são baseados na classe KDevPlugin que está definida em 'lib/interfaces/kdevplugin.h'. O seguinte é retirado de um comentário de lá (devidamente traduzida).</para>

<para
>O KDevPlugin é a classe de base para todos os 'plugins' do KDevelop. Um 'plugin' é um componente que é carregado na plataforma do KDevelop no início ou a pedido. Um 'plugin' tem um âmbito que poderá ser: <itemizedlist>
<listitem
><simpara
>Nuclear</simpara
></listitem>
<listitem
><simpara
>Global</simpara
></listitem>
<listitem
><simpara
>Projecto</simpara
></listitem>
</itemizedlist>
</para>

<para
>Os 'plugins' nucleares são 'plugins' globais que oferecem alguma funcionalidade "nuclear" e, como tal, não são seleccionados pelo utilizador, nas páginas de configuração dos 'plugins'.</para>

<para
>Os 'plugins' globais são 'plugins' que só necessitam da plataforma para serem carregados e não operam na interface KDevProject e/ou não usam a informação ao nível do projecto. Por exemplo, o 'plugin' 'uimode' permite a um programador escolher a interface do utilizador que deseja usar. </para>

<para
>Os 'plugins' do projecto necessitam de ter um projecto carregado e são normalmente carregados/terminados em conjunto com o projecto. Se um 'plugin' funcionar com informação relacionada com o projecto, então é um 'plugin' de projecto. O Gestor do Automake, por exemplo, só necessita de estar activo quando estiver carregado um projecto baseado no Automake. </para>

<para
>Como foi dito acima, os 'plugins' do núcleo não poderão ser desactivados. Os 'plugins' globais podem ser activados/desactivados em <menuchoice
><guimenu
>Configuração</guimenu
> <guimenuitem
>Configurar o KDevelop...</guimenuitem
></menuchoice
> em <guibutton
>'Plugins'</guibutton
>. Os 'plugins' do projecto podem ser activados/desactivados na opção <menuchoice
><guimenu
>Projecto</guimenu
> <guimenuitem
>Opções do Projecto...</guimenuitem
></menuchoice
> em <guibutton
>'Plugins'</guibutton
>. Os 'plugins' activos poderão ter vários efeitos no KDevelop. Dependendo da sua função, poderão adicionar menus extra, opções extra, botões extra na barra de ferramentas, etc. </para>

<para
>Os 'plugins' que estão desactivados não enchem os seus menus e não são carregados na memória. </para>


<para
>A lista de 'plugins' que se segue é gerada por um pequeno programa ('listplugins.sh'), criado por Volker Paul. Todos os 'plugins' têm um ficheiro .desktop cujo nome e comentários estão escritos. Se, no que se segue, este comentários não forem muito úteis, foi porque os autores dos 'plugins' os fizeram assim.</para>
<para
>Os 'plugins' estão organizados por âmbito (Nuclear, Global, Projecto).</para>

<para
>Âmbito: Nuclear</para>
<itemizedlist>
<listitem
><formalpara id="KDevAppWizard">
<title
>Assistente de Aplicações</title>
<para
>Assistente de Aplicações</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevDiff">
<title
>Visualizador de Diferenças</title>
<para
>Visualizador de Diferenças</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevFileCreate">
<title
>Criação de Ficheiros</title>
<para
>Criação de Ficheiros</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevFullScreen">
<title
>Ecrã Completo</title>
<para
>Ecrã Completo</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevTipOfDay">
<title
>Dica do Dia</title>
<para
>Dica do Dia</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevUIChooser">
<title
>Selecção da Interface do Utilizador</title>
<para
>Oferece uma janela para a selecção do modo de interface do utilizador.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevVCSManager">
<title
>Gestor de SCV</title>
<para
>Gestor do Sistema de Controlo de Versões </para
></formalpara
></listitem>
</itemizedlist>

<para
>Âmbito: Global</para>
<itemizedlist>
<listitem
><formalpara id="KDevAbbrev">
<title
>Expansão de Abreviaturas</title>
<para
>Oferece o suporte para as abreviaturas personalizadas - as palavras pequenas que se expandem em estruturas de código comuns necessárias.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevDocumentation">
<title
>Documentação</title>
<para
>O 'plugin' de Documentação oferece a navegação e pesquisa na documentação local e 'online', com o suporte para vários sistemas de documentação.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevfilelist">
<title
>Lista de Ficheiros</title>
<para
>Oferece uma lista com todos os ficheiros abertos. (É útil quando a barra de páginas não é suficientemente larga.)</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevFileSelector">
<title
>Selector de Ficheiros</title>
<para
>Um utilitário de navegação de ficheiros transparente na rede e poderoso.</para
></formalpara
></listitem>
<listitem
><formalpara>
<title
>Filtragem e Inserção da Linha de Comandos</title>
<para
>Oferece uma forma de manipular o texto do editor com base em ferramentas da linha de comandos. Aparece no menu Ferramentas.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevGrepView">
<title
>Interface do Grep</title>
<para
>Integra o "find|grep" no KDevelop - permite uma procura rápida em vários ficheiros, com padrões e expressões regulares.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevKonsoleView">
<title
>Konsole Embebido</title>
<para
>Este 'plugin' dá ao KDevelop um Konsole incorporado, para poder aceder fácil e rapidamente à linha de comandos.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevOpenWith">
<title
>Adição do Menu "Abrir com"</title>
<para
>Este 'plugin' oferece alternativas adicionais para "abrir" nos vários menus de contexto do KDevelop.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevPartExplorer">
<title
>Ferramenta de Exploração de Componentes</title>
<para
>Uma ferramenta gráfica para efectuar pesquisas do tipo do KTrader acerca dos serviços registados</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevRegexpTest">
<title
>Teste de Expressões Regulares</title>
<para
>Uma ferramenta para desenhar e testar expressões regulares, usando as sintaxes de expressões regulares normais.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevReplace">
<title
>Componente de Substituição</title>
<para
>Este 'plugin' é uma ferramenta interactiva de "Procurar e Substituir" ao nível do projecto. Faça a pesquisa com a correspondência por texto ou expressões regulares, e seleccione as substituições a fazer, numa antevisão, antes de a acção terminar. Logo que esteja carregada, aparece no menu Editar.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevscripting">
<title
>Programação</title>
<para
>O 'plugin' de Programação oferece capacidades de programação em KScript à aplicação KDevelop</para
></formalpara
></listitem>
<listitem
><formalpara id="Code_Snippets">
<title
>Excertos de Código</title>
<para
>Este 'plugin' permite-lhe gravar excertos de código e adicioná-los ao seu código</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevTextTools">
<title
>Estrutura do Texto</title>
<para
>Oferece uma vista estrutural e de navegação para os ficheiros em HTML e TEX</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevTools">
<title
>Adição ao Menu de Ferramentas</title>
<para
>Este 'plugin' oferece uma forma simples para adicionar aplicações externas ao menu e às barras de Ferramentas.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevvalgrind">
<title
>Interface para o Valgrind</title>
<para
>O Valgrind é uma ferramenta que o ajuda a detectar problemas de gestão de memória nos programas. Veja em http://developer.kde.org/~sewardj/</para
></formalpara
></listitem>
</itemizedlist>

<para
>Âmbito: Projecto</para>
<itemizedlist>
<listitem
><formalpara id="KDevannotation">
<title
>'Plugin' de anotações</title>
<para
>Descrição da anotação</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevAStyle">
<title
>Formatador do Código-Fonte</title>
<para
>Um 'plugin' para formatar o código-fonte, de acordo com um conjunto bem definido de regras. Quando for carregado, está presente no menu Ferramentas.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevBookmarks">
<title
>Favoritos</title>
<para
>Um 'plugin' que oferece a navegação e a apresentação de favoritos de código activos, mantendo-os persistentes entre sessões.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevClassView">
<title
>Área de Classes</title>
<para
>Este 'plugin' mostra uma vista gráfica sobre todas as classes do projecto, completas com os métodos e atributos, oferecendo ainda uma forma de navegar directamente pelo código.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevcopyto">
<title
>Copiar Para</title>
<para
>Um 'plugin' de envio de ficheiros simples. Faz uma cópia de ficheiros através de qualquer protocolo suportado pelo KIO.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevCTags2">
<title
>Interface para o CTags</title>
<para
>O CTags é uma ferramenta para navegar no código, com o suporte para várias línguas. Quando for carregado, oferece um menu para procurar as declarações/definições dos tipos, assim como uma janela de pesquisa. Para mais informações, vá a http://ctags.sourceforge.net/</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevdistpart">
<title
>Suporte de Empacotamento Final</title>
<para
>Ajuda na criação de pacotes e na publicação do projecto final. Só é suportado o formato de pacotes RPM, por agora.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevDoxygen">
<title
>Suporte para Doxygen</title>
<para
>O 'plugin' do 'doxygen' oferece uma forma de indicar e controlar a geração da documentação para um projecto, com base no conteúdo do código-fonte. Deverá ter o 'doxygen' instalado para poder usar isto. Para mais informações, vá a  http://www.doxygen.org</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevQuickOpen">
<title
>Abertura Rápida</title>
<para
>Oferece uma forma eficiente de procurar/abrir ficheiros, classes e métodos num projecto grande. Aparece nos menus Ficheiro e Ferramentas, quando estiver carregado.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevSecurity">
<title
>Verificação de Segurança</title>
<para
>Verificação da segurança do código</para
></formalpara
></listitem>
</itemizedlist>
<para
>Até agora, foi a lista de 'plugins' gerada.</para>


<table id="table-project-parts">
<title
>'Plugins' de Gestão de Projectos do &kdevelop;</title>
<tgroup cols="2"
><tbody>
<row>
  <entry
>antproject</entry>
  <entry
>Gestor de Projectos do ANT (aplicações de &Java;)</entry>
</row>
<row>
  <entry
>autoproject</entry>
  <entry
>Gestor de Projectos do Automake</entry>
</row>
<row>
  <entry
>customproject</entry>
  <entry
>Gestor de Projectos Personalizados</entry>
</row>
<row>
  <entry
>trollproject</entry>
  <entry
>Gestor de Projectos baseado no QMake</entry>
</row>
</tbody
></tgroup>
</table>
<para
>Os 'plugin' acima indicados estão de momento (Maio de 2005) vazios. Talvez o suporte para a gestão de projectos seja implementado como 'plugins' no futuro.</para>


<table>
<title
>'Plugins' de Suporte de Linguagens no &kdevelop;</title>
<tgroup cols="2">
<tbody>
<row
><entry
>cppsupport</entry
><entry
>Suporte para C/C++</entry
></row>
<row
><entry
>fortransupport</entry
><entry
>Suporte para Fortran</entry
></row>
<row
><entry
>javasupport</entry
><entry
>Suporte para &Java;</entry
></row>
<row
><entry
>perlsupport</entry
><entry
>Suporte para Perl</entry
></row>
<row
><entry
>phpsupport</entry
><entry
>Suporte para PHP</entry
></row>
<row
><entry
>pythonsupport</entry
><entry
>Suporte para Python</entry
></row>
</tbody
></tgroup>
</table>


<para
>No que se segue, alguns dos 'plugins' serão discutidos em detalhe.</para>

<itemizedlist>
<listitem>
<formalpara>
<title
>O 'plugin' <command
>abbrev</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>abbrev</command
></primary
></indexterm>

<para
>Este 'plugin' expande as abreviaturas em excertos de código usados com frequência. É activado ao carregar em <keycombo
><keycap
>Ctrl</keycap
> <keycap
>Espaço</keycap
></keycombo
>. Por exemplo, quando indicar <literal
>"ife"</literal
> num ficheiro de C++ no editor e carregar em <keycombo
><keycap
>Ctrl</keycap
><keycap
>Espaço</keycap
></keycombo
>, irá obter um modelo de código <literal
>if-else</literal
>, poupando assim algum texto escrito manualmente. O conjunto de abreviaturas depende da linguagem de programação do ficheiro editado. Por exemplo, para o PHP, irá estar obviamente interessado noutros modelos de código que não os do &Java;. </para>
</formalpara>

<para
>O conjunto de modelos de código é configurável. Se o 'plugin' estiver activo, poderá ver os que estão disponíveis na opção <menuchoice
><guimenu
>Configuração</guimenu
> <guimenuitem
>Configurar o KDevelop...</guimenuitem
></menuchoice
>, em <guibutton
>Abreviaturas</guibutton
>. </para>
</listitem>

<listitem>
<formalpara id="KDevFilter">
<title
>O 'plugin' <command
>filter</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>filtro</command
></primary
></indexterm>

<para
>Este oferece duas funcionalidades. Se seleccionar a opção <menuchoice
><guimenu
>Ferramentas</guimenu
> <guimenuitem
>Executar o comando</guimenuitem
></menuchoice
>, poderá indicar um comando da consola. O resultado deste comando é introduzido na janela de edição, quando carregar no botão <guibutton
>Iniciar</guibutton
>. </para>
</formalpara>

<para
>Está disponível uma funcionalidade relacionada em <menuchoice
><guimenu
>Ferramentas</guimenu
><guimenuitem
>Filtrar a selecção pelo comando...</guimenuitem
></menuchoice
>. Para a usar, deverá seleccionar uma área de texto no editor. Se agora indicar um comando e carregar no botão <guibutton
>Iniciar</guibutton
>, o comando é iniciado e a selecção é usada como dados de entrada para ele. O resultado à saída do comando é então introduzido no editor, substituindo a selecção. </para>

<para
>Por exemplo, se você escrever documentação, terá de fazer referência aos itens do menu. Para o fazer correctamente, p.ex., para o comando Copiar do menu Editar, terá de escrever: <programlisting
>&lt;menuchoice&gt;&lt;guimenu&gt;Editar&lt;/guimenu&gt;&lt;guimenuitem&gt;Copiar&lt;/guimenuitem&gt;&lt;/menuchoice&gt;</programlisting
> Isto é difícil, como tal gostaria de escrever apenas "Editar - Copiar" e deixar que o computador faça a formatação. Aqui está como o poderá fazer. Poderá criar um pequeno programa chamado 'mef', que poderá pôr p.ex., na pasta 'bin' da sua pasta pessoal: <programlisting
>sed s/"^\(.*\) - \(.*\)\$"/"&lt;menuchoice&gt;&lt;guimenu&gt;\1&lt;\/guimenu&gt;&lt;guimenuitem&gt;\2&lt;\/guimenuitem&gt;&lt;\/menuchoice&gt;"/</programlisting
> Não se esqueça de o tornar executável, e é tudo. Agora, no código .docbook da sua documentação, poderá escrever "Editar - Copiar". Se seleccionar o texto que acabou de escrever, escolha a opção <menuchoice
><guimenu
>Ferramentas</guimenu
><guimenuitem
>Filtrar a selecção pelo comando...</guimenuitem
></menuchoice
> e invoque o '~/bin/mef'. Imediatamente o "Editar - Copiar" será substituído por <programlisting
>&lt;menuchoice&gt;&lt;guimenu&gt;Editar&lt;/guimenu&gt;&lt;guimenuitem&gt;Copiar&lt;/guimenuitem&gt;&lt;/menuchoice&gt;</programlisting>
</para>


</listitem>

<listitem>
<formalpara>
<title
>O 'plugin' do &doxygen;</title>
<indexterm zone="plugin-tools"
><primary
>&doxygen;</primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>ferramenta de documentação</primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>Documentação da API</primary
></indexterm>

<para
>Este 'plugin' ajuda a usar a ferramenta de documentação de APIs &doxygen; (<ulink url="http://www.doxygen.org"
></ulink
>). Poderá seleccionar a opção <menuchoice
><guimenu
>Projecto</guimenu
> <guimenuitem
>Executar o Doxygen</guimenuitem
></menuchoice
> para gerar a documentação da API para o seu projecto actual, com base na configuração indicada pelo ficheiro <filename
>Doxyfile</filename
> da pasta do seu projecto. </para>
</formalpara>

<para
>Para além disso, poderá configurar o &doxygen; no menu <menuchoice
><guimenu
>Projecto</guimenu
> <guimenuitem
>Opções do projecto...</guimenuitem
></menuchoice
>. Esta janela é bastante semelhante à ferramenta &doxywizard;. </para>
</listitem>

<listitem>
<formalpara>
<title
>O 'Plugin' do &ctags;</title>
<indexterm zone="plugin-tools"
><primary
>&ctags;</primary
></indexterm>

<para
>Ainda que o navegador de classes lhe dê uma análise extensiva dos símbolos e classes do seu projecto, poderá também querer usar a ferramenta 'ctags'. Em particular, este suporta bastantes mais linguagens que o navegador de classes. </para>
</formalpara>

<para
>Pode activar este 'plugin' em <menuchoice
><guimenu
>Ferramentas</guimenu
> <guimenuitem
>CTags...</guimenuitem
></menuchoice
>. Quando a iniciar da primeira vez, o utilizador será questionado para criar uma base de dados de procura. Quando aceitar essa opção, o programa &ctags; irá iniciar e irá criar um ficheiro chamado <filename
>tags</filename
> na pasta do seu projecto. Este é um ficheiro de texto que contém todos os símbolos dos seus ficheiros de código. </para>

<para
>Poderá procurar na base de dados de símbolos de duas formas: quando a opção <guilabel
>Corresponder à expressão regular</guilabel
> estiver assinalada, o texto que introduzir será interpretado como uma expressão regular (variante POSIX) e aplicada aos símbolos existentes. Por exemplo, o texto <literal
>.*Widget</literal
> irá procurar por todos os símbolos que terminem em <literal
>Widget</literal
>. Se a opção não estiver assinalada, a pesquisa será feita à letra. </para>

<para
>Ao procurar, irá obter uma lista dos símbolos correspondentes, acompanhada dos números de linha em que estes são definidos. Poderá saltar para o ponto respectivo, se carregar num item da lista. </para>

<para
>Para algumas linguagens, o &ctags; distingue os diferentes tipos de símbolos. Por exemplo, o Python tem classes e funções. Poderá optar por procurar apenas por classes, assinalando ou desligando os tipos respectivos na janela. </para>

<para
>A base de dados de símbolos normalmente não é actualizada com as modificações do seu código. Por consequência, ao fim de algum tempo, os números de linha já não estarão mais correctos, e irão faltar as classes e funções novas. Como tal, deverá actualizar o ficheiro <filename
>tags</filename
> com intervalos regulares, carregando no botão <guibutton
>Gerar de novo</guibutton
>. </para>
</listitem>

<listitem>
<formalpara>
<title
>O 'plugin' <command
>astyle</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>astyle</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
><application
>Estilo Artístico</application
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>indentação</primary
></indexterm>

<para
>O 'astyle' é um 'plugin' para formatar o código-fonte, de acordo com um conjunto definido de regras. </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>O 'plugin' <command
>regexptest</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>regexptest</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>depuração</primary
><secondary
>expressões regulares</secondary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>expressões regulares</primary
><secondary
>depuração</secondary
></indexterm>

<para
>A programação com expressões regulares poderá ser bastante complicada. Muitas das vezes, à primeira tentativa, uma expressão irá corresponder com demasiado texto. Em particular, ao lidar com uma linguagem compilada, os tempos em que se anda às voltas a depurar uma expressão regular poderão ser desgastantes. O 'plugin' 'regexptest' permite-lhe explorar directamente as alterações numa expressão regular. É activada ao escolher a opção <menuchoice
><guimenu
>Ferramentas</guimenu
> <guimenuitem
>Depurar a Expressão Regular...</guimenuitem
></menuchoice
>. </para>
</formalpara>

<para
>No grupo da variante, poderá escolher a variante do motor de expressões regulares usada. As versões suportadas de momento são as da norma do POSIX, que é usado pelo programa &grep;, e a sintaxe extendida do POSIX, que é usada pelo programa &egrep;. </para>

<para
>Quando introduzir uma expressão, irá obter uma reacção imediata sobre os erros de sintaxe da mesma. Ao indicar um texto qualquer no <guilabel
>Texto de teste</guilabel
>, poderá ver se a expressão corresponde a este texto. Em particular, se a sua expressão incluir grupos, como o <literal
>([a-z])</literal
>, o conteúdos dos sub-grupos será apresentado numa lista. </para>
</listitem>

<!--
<listitem>
<formalpara>
<title
>The <command
>konsole</command
> Plugin</title>
<indexterm zone="plugin-tools"
><primary
><command
>konsole</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>terminal</primary
><secondary
>embedded</secondary
></indexterm>
<para
></para>
</formalpara>
</listitem>
-->

</itemizedlist>

</appendix
> <!-- plugin-tools -->

<!-- ====================================================================== -->
