<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 ><menuchoice><guimenu>Editar</guimenu><guimenuitem>Copiar</guimenuitem></menuchoice></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/"^\(.*\) - \(.*\)\$"/"<menuchoice><guimenu>\1<\/guimenu><guimenuitem>\2<\/guimenuitem><\/menuchoice>"/</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 ><menuchoice><guimenu>Editar</guimenu><guimenuitem>Copiar</guimenuitem></menuchoice></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 --> <!-- ====================================================================== -->