<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
  <!ENTITY kdevelop "<application
>KDevelop</application
>">
  <!ENTITY kdevrelease "3.1.0">
  <!ENTITY apache "<application
>Apache</application
>">
  <!ENTITY appwizard "Application Wizard">
  <!ENTITY autoconf "<command
>autoconf</command
>">
  <!ENTITY automake "<command
>automake</command
>">
  <!ENTITY automanag "Automake Manager">
  <!ENTITY ctags "<command
>ctags</command
>">
  <!ENTITY CVS "<application
>CVS</application
>">
  <!ENTITY cvs "CVS">
  <!ENTITY doxygen "<application
>Doxygen</application
>">
  <!ENTITY doxywizard "<application
>doxywizard</application
>">
  <!ENTITY egrep "<command
>egrep</command
>">
  <!ENTITY grep "<command
>grep</command
>">
  <!ENTITY libtool "<command
>libtool</command
>">
  <!ENTITY nfwizard "New File Wizard">
  <!ENTITY python "<application
>Python</application
>">
  <!ENTITY perl "<application
>Perl</application
>">
  <!ENTITY php "<application
>PHP</application
>">
  <!ENTITY promanag "Project Manager">
  <!ENTITY qte "<application
>Qt/embedded</application
>">
  <!ENTITY ssh "<application
>ssh</application
>">
  <!-- chapters in separate docbook files -->
  <!ENTITY unixdev SYSTEM "unixdev.docbook">
  <!ENTITY kdevelop-survey SYSTEM "kdevelop-survey.docbook">
  <!ENTITY kdevelop-install SYSTEM "kdevelop-install.docbook">
  <!ENTITY getting-started SYSTEM "getting-started.docbook">
  <!ENTITY setup SYSTEM "setup.docbook">
  <!ENTITY applicationwizard SYSTEM "applicationwizard.docbook">
  <!ENTITY project-advanced SYSTEM "project-advanced.docbook">
  <!ENTITY project-management SYSTEM "project-management.docbook">
  <!ENTITY app-files SYSTEM "app-files.docbook">
  <!ENTITY app-menu SYSTEM "app-menu.docbook">
  <!ENTITY kdevelop-scripting SYSTEM "kdevelop-scripting.docbook">
  <!-- book related entities -->
  <!ENTITY kappname "&kdevelop;">
  <!ENTITY % addindex "INCLUDE">
  <!ENTITY % Portuguese "INCLUDE"
> <!-- change language only here -->
]>

<!--
NOTE:
Entries which require special treatment are marked with comments starting with '###'. They should be visited on a regular basis.
-->

<book lang="&language;">

<bookinfo>
  <title
>Manual do Utilizador do &kdevelop;</title>

  <date
>2004-11-13</date>
  <releaseinfo
>&kdevrelease;</releaseinfo>

  <authorgroup>
    <author
><firstname
>Bernd</firstname
> <surname
>Gehrmann</surname
> <affiliation
> <address
><email
>bernd@kdevelop.org</email
></address>
      </affiliation>
    </author>

    <author
><firstname
>Caleb</firstname
> <surname
>Tennis</surname
> <affiliation
> <address
><email
>caleb@aei-tech.com</email
></address>
      </affiliation>
    </author>

    <author
><firstname
>Bernd</firstname
> <surname
>Pol</surname
> <affiliation
> <address
><email
>bernd.pol@online.de</email
></address>
      </affiliation>
    </author>
  </authorgroup>

  <copyright>
    <year
>2002</year>
    <holder
>Bernd Gehrmann</holder>
  </copyright>
  <copyright>
    <year
>2002</year>
    <holder
>Caleb Tennis</holder>
  </copyright>
  <copyright>
    <year
>2004</year>
    <holder
>Bernd Pol</holder>
  </copyright>

  <!--ROLES_OF_TRANSLATORS-->

  <legalnotice
>&FDLNotice;</legalnotice>

  <abstract>
    <para
>O &kdevelop; é um Ambiente de Desenvolvimento Integrado para ser usado numa grande variedade de tarefas de programação.</para>
  </abstract>

  <keywordset>
    <keyword
>KDE</keyword>
    <keyword
>KDevelop</keyword>
    <keyword
>IDE</keyword>
    <keyword
>desenvolvimento</keyword>
    <keyword
>programação</keyword>
  </keywordset>

</bookinfo>

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

<chapter id="survey-manual">
<title
>O Que Este Manual Contém</title>

<para
>Este manual de utilizador pretende descrever o conteúdo e a utilização do Ambiente de Desenvolvimento Integrado (IDE) &kdevelop; &kdevrelease; do ponto de vista de um utilizador. Não é nenhum manual de programação nem descreve o processo de desenvolvimento em detalhe. O seu único objectivo é guiá-lo na interacção com o IDE. </para>
<para
>Aqui, você irá encontrar informações sobre os seguintes tópicos: </para>
<itemizedlist>
  <listitem
><para
><link linkend="nutshell"
>Num minuto</link
> &mdash; uma referência rápida aos comandos e acções mais usados. Também é um guia breve para resolver os problemas comuns ao trabalhar com o &kdevelop;. </para
></listitem>

  <listitem
><para
><link linkend="unixdev"
>Desenvolvimento em UNIX</link
> &mdash; uma introdução histórico à programação em UNIX, as ferramentas principais necessárias e porque é que você precisa de um IDE. </para
></listitem>

  <listitem
><para
><link linkend="kdevelop-install"
>Instalar o &kdevelop;</link
> &mdash; diz-lhe como obter o &kdevelop; e como o pôr a funcionar. </para
></listitem>

  <listitem
><para
><link linkend="getting-started"
>Introdução ao &kdevelop; &mdash; uma Visita Guiada</link
> &mdash; dá-lhe uma introdução rápida ao uso deste IDE, introduzindo os passos básicos para trabalhar num projecto. </para
></listitem>

  <listitem
><para
><link linkend="kdevelop-survey"
>Introdução das Funcionalidades do &kdevelop;</link
> &mdash; extende a visita guiada do capítulo anterior, dando uma introdução geral ao que está incorporado no &kdevelop; e põe-o a par com a aparência e comportamento deste IDE. </para
></listitem>

  <listitem
><para
><link linkend="app-menus"
>Introdução aos Menus e Barras de Ferramentas</link
> &mdash; (no apêndice) dá-lhe uma breve introdução às selecções do menu e da barra de ferramentas que estão disponíveis. </para
></listitem>

  <listitem
><para
>As <link linkend="app-shortcuts"
>Teclas de Atalho</link
> &mdash; (no apêndice) lista as sequências de telcas que poderá usar para aceder rapidamente às operações específicas do &kdevelop;. </para
></listitem>

  <listitem
><para
><link linkend="setup"
>Configurar o &kdevelop;</link
> &mdash; mostra-lhe como poderá adequar o IDE às suas necessidades. </para
></listitem>


  <listitem
><para
><link linkend="kdevelop-install"
>'Scripting' com o &kdevelop;</link
> &mdash; descreve como pode adicionar 'scripts' para automatizar o &kdevelop;. </para
></listitem>

<!--  <listitem
><para>
  <link linkend="applicationwizard"
>Getting started: the &appwizard;</link
> &mdash; describes the basics of how to set up a new project in &kdevelop; using the built-in &appwizard;.
  </para
></listitem
>-->

  <listitem
><para
><link linkend="projects-advanced"
>Gestão Avançada de Projectos</link
> &mdash; mostra como carregar os projectos existentes, converter os projectos das versões mais antigas do &kdevelop; e importar os outros projectos existentes. Para além disso, a configuração das opções do projecto de acordo com as suas necessidades também é coberta. </para
></listitem>

  <listitem
><para
><link linkend="editing"
>Ferramentas de edição</link
> &mdash; tudo o que precisa para criar os seus ficheiros de código: usar o editor, procurar por texto a nível local ou do projecto, até à integração de novos ficheiros e classes no projecto. </para
></listitem>

  <listitem
><para
><link linkend="file-browsers"
>Os navegadores de ficheiros</link
> &mdash; demonstra várias ferramentas para olhar para a estrutura do seu projecto e para aceder aos ficheiros com que deseja trabalhar. </para
></listitem>

  <listitem
><para
><link linkend="class-browsers"
>Os Navegadores de Classes</link
> &mdash; descreve uma das ferramentas mais poderosas do &kdevelop;, que lhe permite navegar pelas dependências de classes e lhe permite criar e aceder facilmente às classes e métodos que necessita. </para
></listitem>

  <listitem
><para
><link linkend="documentation"
>Documentação</link
> &mdash; mostra como aceder à documentação rica que é apresentada pelo &kdevelop; e diz-lhe como criar a documentação do seu projecto, a documentação concisa e poderosa da API, dando-lhe uma ideia geral sobre todo o código do seu projecto, assim como a documentação do utilizador baseada em DocBook. </para
></listitem>
  <listitem
><para
><link linkend="project-management"
>Gestão de Compilações e de Projectos</link
> &mdash; lida com a criação e a gesta do seu projecto, descrevendo as bases do 'autoconf' e do 'automake', assim como a forma para personalizar os ficheiros do 'make' e como usar as opções do mesmo para ajustar a sua aplicação às suas necessidades. </para
></listitem>

  <listitem
><para
><link linkend="adv-build-management"
>Gestão Avançada de Compilações</link
> &mdash; vê as formas de manter várias configurações de compilações, de modo a fazer compilação cruzada para várias plataformas, ou para criar um sistema embebido, usando a biblioteca <application
>Qt/embedded</application
>. </para
></listitem>

  <listitem
><para
><link linkend="debugger"
>A interface do depurador</link
> &mdash; ddescreve como usar a interface integrada do depurador <application
>gdb</application
>, de modo a que você possa descobrir e eliminar os erros sem sair do &kdevelop;. </para
></listitem>

<!-- ### Currently disabled. Probably too specialized programming stuff. Check later again.
  <listitem
><para>
  <link linkend="python"
>Python</link
> &mdash; an overview of how to create Python-based applications in &kdevelop;.
  </para
></listitem>
  <listitem
><para>
  <link linkend="php"
>PHP</link
> &mdash;  an overview of how to create PHP-based HTML applications in &kdevelop;.
  </para
></listitem
>//-->

  <listitem
><para
><link linkend="cvs"
>Usar o CVS</link
> &mdash; diz-lhe como poderá manter o seu projecto no sistema de controlo de versões CVS, uma obrigatoriedade, principalmente se muitos utilizadores trabalham no mesmo projecto. </para
></listitem>

  <listitem
><para
><link linkend="external-progs"
>Englobar Programas Externos</link
> &mdash; mostra como aceder aos programas externos e às ferramentas dentro do &kdevelop;, enriquecendo desta forma as suas capacidades. </para
></listitem>

  <listitem
><para
><link linkend="plugin-tools"
>Ferramentas em 'Plugins'</link
> &mdash; dá-lhe uma introdução aos componentes que compõem o &kdevelop; e como os poderá usar de acordo com as suas necessidades, carregando apenas os componentes necessários, tanto a nível do projecto como a nível do IDE. </para
></listitem>

  <listitem
><para
>Alguma informação usada de forma como foi colocada no <emphasis
>apêndice</emphasis
>. Entre outras coisas, este consiste em: <itemizedlist>
    <listitem
><para
><link linkend="app-menus"
>Introdução aos Menus e Barras de Ferramentas</link
> &mdash; dá-lhe uma breve introdução às selecções do menu e da barra de ferramentas que estão disponíveis. </para
></listitem>

    <listitem
><para
>As <link linkend="app-shortcuts"
>Teclas de Atalho</link
> &mdash; lista as sequências de telcas que poderá usar para aceder rapidamente às operações específicas do &kdevelop;. </para
></listitem>

    <listitem
><para
><link linkend="app-files"
>Ficheiros de Configuração Usados pelo &kdevelop;</link
> &mdash; indica os ficheiros que o &kdevelop; usa para gravar a sua informação interna. Isto é particularmente útil, no caso de ocorrer algo de mal com a sua configuração. </para
></listitem>

    <listitem
><para
><link linkend="plugin-tools"
>Ferramentas de 'Plugins'</link
> &mdash; mostra-lhe os módulos que poderá usar para adequar o &kdevelop; às suas necessidades. </para
></listitem>
  </itemizedlist>
  </para
></listitem>
</itemizedlist>
</chapter>

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

<chapter id="nutshell">
<title
>Num Minuto &mdash; Dicas e Truques</title>

<!-- Traditionally, most of this stuff will have been put into a FAQ section. It is more useful, however, to put it at the very start of a manual, as this is the place the (inexperienced) user first looks for.
This chapter is meant to provide short hints and tips together with (mandatory) navigation links.
There should be an additional FAQ section near the end nevertheless which contains more general stuff not directly related to navigating the manual. -->

<para
>A informação neste capítulo pretende ser uma referência rápida para um arranque rápido ou se você (momentaneamente) se esqueceu de algum conceito básico. Existem também algumas sugestões breves sobre como resolver alguns problemas comuns ao trabalhar no &kdevelop;. </para>
<para
>Se você quiser mais informações sobre um dado tópico, basta seguir a referência no título que inicia esse conselho. </para>
<para
>Estão disponíveis informações sobre os seguintes tópicos: </para>
<simplelist>
  <member
><link linkend="nutshellitem-look-and-feel"
>Aparência e Comportamento</link
></member>
  <member
><link linkend="nutshellitem-projects"
>Projectos</link
></member>
  <member
><link linkend="nutshellitem-compilation"
>Compilação</link
></member>
  <member
><link linkend="nutshellitem-automake"
>&automanag;</link
></member>
  <member
><link linkend="nutshellitem-compilemake"
>Problemas de Compilação/Make</link
></member>
  <member
><link linkend="nutshellitem-others"
>Outros Tópicos</link
></member>
</simplelist>

<itemizedlist id="nutshellitem-look-and-feel">
  <title
>Aparência e Comportamento</title>

  <listitem>
    <formalpara id="nutshell-IDEAl-tabs">
    <title
><link linkend="setup-ui-toolview"
>Forçar as Páginas de Ferramentas a Ficarem Menores no Modo IDEAl</link
></title>
    <para
>Por omissão, o &kdevelop; começa com páginas grandes baseadas em texto por toda a área de trabalho. Você poderá mudar esta aparência para poupar espaço na janela de configuração do &kdevelop; (<menuchoice
><guimenu
>Configuração</guimenu
> <guimenuitem
>Configurar o KDevelop...</guimenuitem
> <guimenuitem
>Interface do Utilizador</guimenuitem
></menuchoice
>). </para>
    </formalpara>
    <para
>Se você usar uma versão mais antiga do &kdevelop; 3, esta janela de configuração poderá não estar disponível. Para mudar a apresentação das páginas de ferramentas, coloque uma opção <computeroutput
>MDIStyle</computeroutput
> na secção <computeroutput
>[UI]</computeroutput
> do seu ficheiro de configuração <filename
>$KDEHOME/share/config/kdeveloprc</filename
>, como se segue: </para>
    <simplelist>
      <member
><computeroutput
>MDIStyle=0</computeroutput
>: apenas os ícones</member>
      <member
><computeroutput
>MDIStyle=1</computeroutput
>: apenas o texto (por omissão)</member>
      <!--<member
><computeroutput
>MDIStyle=2</computeroutput
>: icons only on smaller tabs (not very useful)</member
>-->
      <member
><computeroutput
>MDIStyle=3</computeroutput
>: ícones e texto</member>
    </simplelist>
  </listitem>

  <!-- ### remove this entry when the bug is repaired -->
  <listitem>
    <formalpara id="nutshell-weird-style">
    <title
>Caracteres com Cores e/ou Estilo de Apresentação Estranhos</title>
    <para
>Se você ver as letras coloridas aleatoriamente por todo o lado (&ie; nas páginas, barras de ferramentas, etc.) e a janela do &kdevelop; a usar um estilo de visualização estranho, isto poderá ajudar: </para>
    </formalpara>
    <itemizedlist>
      <listitem
><para
>No seu ficheiro de configuração <filename
>$KDEHOME/share/config/kdeveloprc</filename
>, procure a linha que contém <quote
><computeroutput
>Style=Checked</computeroutput
></quote
> e remova-a. Depois reinicie o &kdevelop;. </para
></listitem>
    </itemizedlist>
    <para
>(Este comportamento ocorre algumas vezes quando você carrega num ficheiro UI num dos navegadores de ficheiros e o &kdevelop; carregou o <application
>KUIViewer</application
> para mostrar a &GUI; que foi produzida com este ficheiro). </para>
  </listitem>

  <listitem>
    <formalpara id="nutshell-full-screen">
    <title
><link linkend="maximize-workspace"
>Modo de Ecrã Completo</link
></title>
    <para
>Seleccione <menuchoice
> <guimenu
>Ver</guimenu
> <guimenuitem
>Modo de Ecrã Completo</guimenuitem
> </menuchoice
> no menu ou carregue em <keycombo
> <keycap
>Ctrl</keycap
> <keycap
>Shift</keycap
> <keycap
>F</keycap
> </keycombo
>. </para>
    </formalpara>
  </listitem>

  <listitem>
    <formalpara id="nutshell-hide-menu">
    <title
><link linkend="maximize-workspace"
>Esconder/Mostrar o Menu</link
></title>
    <para
>Para <emphasis
>esconder</emphasis
> o menu seleccione <menuchoice
> <guimenu
>Configuração</guimenu
> <guimenuitem
>Mostrar o Menu</guimenuitem
> </menuchoice
> nas opções de menu ou carregue em <keycombo
> <keycap
>Ctrl</keycap
> <keycap
>M</keycap
> </keycombo
>. Você poderá também incluir um <guiicon
>Mostrar o Menu</guiicon
> numa barra de ferramentas adequada, p.ex., na <guilabel
>Barra de Navegação</guilabel
> para esse fim. Para <emphasis
>voltar a mostrar</emphasis
> o menu você precisa de carregar em <keycombo
> <keycap
>Ctrl</keycap
> <keycap
>M</keycap
> </keycombo
> ou de usar o ícone <guiicon
>Mostrar o Menu</guiicon
>, se estiver disponível. </para>
    </formalpara>
  </listitem>

</itemizedlist>

<itemizedlist id="nutshellitem-projects">
<title
>Projectos</title>

  <listitem>
    <formalpara id="nutshell-new-project">
    <title
><link linkend="new-projects"
>Criar um Novo Projecto</link
></title>
    <para
>O <menuchoice
><guimenu
>Projecto</guimenu
> <guimenuitem
>Novo Projecto...</guimenuitem
></menuchoice
> irá iniciar o <link linkend="applicationwizard"
>&appwizard;</link
>. </para>
    </formalpara>
  </listitem>

  <listitem>
    <formalpara id="nutshell-new-custom-project">
      <title
>Criar um Projecto Personalizado</title>
      <para
>Não existe forma directa de criar um projecto personalizado (&ie; um projecto que usa as suas próprias Makefiles). Use o <menuchoice
><guimenu
>Projecto</guimenu
> <guimenuitem
>Importar um Projecto Existente</guimenuitem
></menuchoice
> em alternativa. Lembre-se de definir o <guilabel
>Tipo de Projecto</guilabel
> adequado, identificado com um <quote
>(Makefiles personalizadas)</quote
>, na janela. </para>
    </formalpara>
  </listitem>

  <listitem>
    <formalpara id="nutshell-project-options">
    <title
><link linkend="project-options"
>Utilize Opções do Projecto Cedo</link
></title>
    <para
>Sempre que você inicia um projecto, não se esqueça de definir as <menuchoice
><guimenu
>Projecto</guimenu
> <guimenuitem
>Opções do Projecto...</guimenuitem
></menuchoice
> de acordo com a sua vontade. </para>
    </formalpara>
  </listitem>
</itemizedlist>

<itemizedlist id="nutshellitem-compilation">
<title
>Compilação</title>
  <listitem>
    <formalpara id="nutshell-compilemsg-detail">
    <title
><link linkend="setup-main-compile"
>Faltam detalhes nas mensagens de compilação</link
></title>
    <para
>Se, durante as compilações, você reparar que alguma informação valiosa está em falta na janela de <guilabel
>Mensagens de Resultado</guilabel
>, poderá ter a ver com o nível de detalhe de mensagens demasiado baixo. Carregue com o &RMB; na janela e seleccione outro nível de detalhe no menu de contexto. </para>
    </formalpara>
  </listitem>
</itemizedlist>

<itemizedlist id="nutshellitem-automake">
<title
><link linkend="automake-manager"
>&automanag;</link
></title>

    <listitem>
      <formalpara id="nutshell-new-project-file">
      <title
>Criar Novos Ficheiros num Projecto</title>
      <para
>Seleccione o subprojecto na parte superior do &automanag;, carregando depois com o &RMB; na parte inferior do título dos grupos a que deseja adicionar os ficheiros e seleccione <guimenuitem
>Criar Novo Ficheiro...</guimenuitem
>. </para>
      </formalpara>
    </listitem>

    <listitem>
      <formalpara id="nutshell-add-project-file">
      <title
>Adicionar Ficheiros Existentes ao Projecto</title>

      <para
>Seleccione o subprojecto na parte superior do &automanag; e carregue então com o &RMB; na parte inferior do título dos grupos a que deseja adicionar os ficheiros e seleccione <guimenuitem
>Adicionar os Ficheiros Existentes...</guimenuitem
>. </para>
      </formalpara>
    </listitem>

    <listitem>
      <formalpara id="nutshell-del-project-file">
      <title
>Remover um Ficheiro do Projecto</title>

      <para
>Seleccione o subprojecto na metade superior do &automanag;, abrindo então na parte inferior a lista de grupos de que deseja remover o ficheiro, carregando com o &RMB; no ficheiro desta lista e seleccionando <guimenuitem
>Remover</guimenuitem
>. </para>
      </formalpara>
    </listitem>
  </itemizedlist>

<itemizedlist id="nutshellitem-compilemake">
  <title
>Problemas de Compilação/Make</title>

  <listitem>
    <formalpara id="nutshell-builddirproblems">
    <!-- ### Change the following link once a more comprehensive sourcedir != builddir description is available. -->
    <title
><link linkend="defaultbuild-warning"
>O projecto não compila de novo, depois de mudar de/para o alvo por omissão</link
></title>
    <para
>Existe um problema com as funcionalidades do &automake;/&autoconf;. Se o <menuchoice
> <guimenu
>Projecto</guimenu
> <guimenuitem
>Configuração de Compilação</guimenuitem
></menuchoice
> tenta seleccionar a partir de três directorias de compilação: <guimenuitem
>default</guimenuitem
>, <guimenuitem
>optimized</guimenuitem
> e <guimenuitem
>debug</guimenuitem
>, tente fixar-se <emphasis
>apenas</emphasis
> no 'default' <emphasis
>ou</emphasis
> apenas no 'debug'/'optimized'. </para>
    </formalpara>
    <itemizedlist>
      <listitem
><para
>Logo que tenha configurado o seu projecto com o 'default', não conseguirá mais compilar com o 'debug' ou o 'optimized'. </para
></listitem>
      <listitem
><para
>Logo que tenha configurado o seu projecto com o 'debug' ou o 'optimized', não conseguirá mais compilar com o 'default'.</para
></listitem>
     </itemizedlist>
  </listitem>

  <listitem>
    <formalpara id="nutshell-autoconf-problem">
    <title
>Erro de <quote
>Wrong <command
>autoconf</command
> version</quote
> (Versão incorrecta do <command
>autoconf</command
></title>

    <para
>Existem várias mensagens de erro que dizem respeito às versões muito antigas do <application
>autoconf</application
> etc., que impedem o <command
>configure</command
> de funcionar convenientemente. Execute o <command
>autoreconf</command
> na árvore de directorias em que os ficheiros <filename
>configure.in</filename
> em questão se encontram. Este comando irá tentar actualizar a informação nos ficheiros do Sistema de Compilação da &GNU;. Veja o <command
>man autoreconf</command
> para mais informações. </para>
    </formalpara>
  </listitem>
</itemizedlist>

<itemizedlist id="nutshellitem-others">
<title
>Outros Tópicos</title>
  <listitem>
    <formalpara id="nutshell-others-files">
    <title
><link linkend="app-files"
>Ficheiros de Configuração Usados pelo &kdevelop;</link
></title>
    <para
>Normalmente não terá de se preocupar com estes, mas isto é bastante útil para saber, no caso de ocorrer algo de mal com a sua configuração. </para>
    </formalpara>
  </listitem>
</itemizedlist>

</chapter
> <!-- nutshell -->

<!-- ====================================================================== -->
<!-- External Chapters -->
&unixdev;            <!-- "Development on &UNIX;"                           -->
&kdevelop-install;   <!-- "Installing &kdevelop;"                           -->
&getting-started;    <!-- "Getting Started"                                 -->
&kdevelop-survey;    <!-- "Overview of &kdevelop; Features"                 -->
&setup;              <!-- "Configuring &kdevelop;"                          -->
&kdevelop-scripting; <!-- "Scripting &kdevelop;"                            -->
<!-- ### This chapter will be removed soon: -->
&applicationwizard;  <!-- "Getting Started &mdash; the &appwizard;"         -->
&project-advanced;   <!-- "Advanced Project Management"                     -->

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

<chapter id="editing">
<title
>Ferramentas de Edição</title>

<sect1 id="editing-snippets">
<title
>Pedaços de Código</title>

<itemizedlist>
  <title
>Funcionalidades (introdução preliminar)</title>
  <listitem
><para
>O SnippetPart adiciona uma janela de ferramentas acoplada por omissão à direita </para
></listitem>
  <listitem
><para
>A adição, edição e remoção de pedaços de código está disponível com um menu de contexto </para
></listitem>
  <listitem
><para
>Se fizer duplo-click sobre um pedaço de código, irá inseri-lo na janela activa, na posição actual do cursor </para
></listitem>
  <listitem
><para
>As dicas de ferramentas mostram o conteúdo de um pedaço de código </para
></listitem>
  <listitem
><para
>Os pedaços de código são armazenados na directoria pessoal do utilizador, por isso todos os utilizadores poderão ter os seus próprios pedaços de código </para
></listitem>
  <listitem
><para
>Os pedaços de código poderão conter variáveis do estilo $NOME_VARIAVEL$. Ao usar o pedaço de código, são pedidos ao utilizador os valores de substituição para as variáveis </para
></listitem>
</itemizedlist>
</sect1
> <!-- editing-snippets -->

<sect1 id="keyboardmapping">
<title
>Mapeamento do Teclado</title>
<indexterm zone="keyboardmapping"
><primary
>combinações de teclas</primary
></indexterm>

<para
>A seguir, iremos listar as combinações de teclas por omissão do editor predefindo. Você poderá configurá-las como desejar. </para>

<informaltable>
<tgroup cols="2">
<tbody>

<row
><entry
><para
><keycap
>Esquerda </keycap
></para
></entry>
<entry
><para
>Move-se um carácter para a esquerda </para
></entry
></row>

<row
><entry
><para
><keycap
>Direita </keycap
></para
></entry>
<entry
><para
>Move-se um carácter para a direita </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> Esquerda </keycap
></keycombo
></para
></entry>
<entry
><para
>Move-se uma palavra à esquerda </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> Direita </keycap
></keycombo
></para
></entry>
<entry
><para
>Move-se uma palavra à direita </para
></entry
></row>

<row
><entry
><para
><keycap
>Cima </keycap
></para
></entry>
<entry
><para
>Sobe uma linha </para
></entry
></row>

<row
><entry
><para
><keycap
>Baixo </keycap
></para
></entry>
<entry
><para
>Desce uma linha </para
></entry
></row>

<row
><entry
><para
><keycap
>PgUp </keycap
></para
></entry>
<entry
><para
>Sobe uma página </para
></entry
></row>

<row
><entry
><para
><keycap
>PgDn </keycap
></para
></entry>
<entry
><para
>Desce uma página </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> PgUp </keycap
></keycombo
></para
></entry>
<entry
><para
>Move-se para o início do ficheiro </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> PgDn </keycap
></keycombo
></para
></entry>
<entry
><para
>Move-se para o fim do ficheiro </para
></entry
></row>

<row
><entry
><para
><keycap
>Home </keycap
></para
></entry>
<entry
><para
>Move-se para o início da linha </para
></entry
></row>

<row
><entry
><para
><keycap
>End </keycap
></para
></entry>
<entry
><para
>Move-se para o fim da linha </para
></entry
></row>

</tbody>
</tgroup>
</informaltable>

<para
>Para todas as teclas acima, o <keycap
>Shift</keycap
> poderá ser carregado adicionalmente, para marcar da posição actual do cursor até à posição final. </para>

<informaltable>
<tgroup cols="2">
<tbody>

<row
><entry
><para
><keycap
>Backspace </keycap
></para
></entry>
<entry
><para
>Apaga um carácter à esquerda </para
></entry
></row>

<row
><entry
><para
><keycap
>Delete </keycap
></para
></entry>
<entry
><para
>Apaga o carácter que está por baixo do cursor </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> C </keycap
></keycombo
></para
></entry>
<entry
><para
>Copia o texto seleccionado para a área de transferência </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> V </keycap
></keycombo
></para
></entry>
<entry
><para
>Cola o texto seleccionado a partir da área de transferência </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> X </keycap
></keycombo
></para
></entry>
<entry
><para
>Apaga o texto seleccionado e coloca-o na área de transferência </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> Z </keycap
></keycombo
></para
></entry>
<entry
><para
>Desfazer </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Shift </keycap
><keycap
> Ctrl </keycap
><keycap
> Z </keycap
></keycombo
></para
></entry>
<entry
><para
>Refazer </para
></entry
></row>

</tbody>
</tgroup>
</informaltable>

</sect1
> <!-- keyboardmapping -->

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

<sect1 id="editing-reporter">
<title
>O Relatório de Problemas</title>

<para
>(... ainda não escrito ...) </para>
</sect1
> <!-- editing-reporter -->

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

<sect1 id="searchinggrepping">
<title
>Procura</title>
<indexterm zone="searchinggrepping"
><primary
>procurar</primary
></indexterm>
<indexterm zone="searchinggrepping"
><primary
>encontrar</primary
></indexterm>

<sect2 id="searching">
<title
>Procurar por Texto</title>

<para
><keycombo
><keycap
>Ctrl</keycap
><keycap
>F</keycap
></keycombo
>- Procurar <keycombo
><keycap
>Ctrl</keycap
><keycap
>R</keycap
></keycombo
>- Substituir </para>

</sect2
> <!-- searching -->


<sect2 id="isearch">
<title
>ISearch</title>
<indexterm zone="isearch"
><primary
>isearch</primary
></indexterm>
<indexterm zone="isearch"
><primary
>pesquisa incremental</primary
></indexterm>
<indexterm zone="isearch"
><primary
>procurar</primary
><secondary
>incremental</secondary
></indexterm>

<para
>A pesquisa convencional com o <menuchoice
><guimenu
>Editar</guimenu
> <guimenuitem
>Procurar</guimenuitem
></menuchoice
> precisa que você indique o termo completo a procurar antes de começar. Na maioria das vezes, é muito mais rápido procurar incrementalmente. Se carregar no campo de edição chamado <guilabel
>ISearch</guilabel
> da barra de ferramentas. A pesquisa é feita à medida que você vai procurando. Você irá descobrir que muitas das vezes o termo desejado é encontrado logo ao fim de 3 ou 4 caracteres introduzidos. </para>

</sect2
> <!-- isearch -->


<sect2 id="grep">
<title
>Pesquisa</title>
<indexterm zone="grep"
><primary
>procurar</primary
><secondary
>em ficheiros</secondary
></indexterm>

<para
>Ambos os mecanismos de procura descritos acima estão restritos a procurar dentro de apenas um ficheiro. Está disponível uma ferramenta adicional que lhe permite procura num conjunto (provavelmente grande) de ficheiros através do item <guimenuitem
>Procurar nos Ficheiros...</guimenuitem
> do menu <guimenu
>Editar</guimenu
>. É basicamente uma interface gráfica para o programa &grep;(1). </para>

<para
>Na janela, você poderá indicar quais os ficheiros que são pesquisados. Existe um conjunto de padrões de caracteres especiais disponíveis numa lista. Desta forma, você poderá restringir com facilidade o mecanismo de procura nos ficheiros de inclusão. Para além disso, você poderá indicar uma directoria onde terá início a procura. Se você assinalar a opção <guibutton
>Recursivo</guibutton
>, a pesquisa vai iterando por todas as directorias cuja hierarquia fica abaixo desta. </para>

<para
>O termo da procura é, de um modo geral, uma expressão regular que segue a sintaxe do POSIX. Por exemplo, você poderá usar o termo <literal
>"\&lt;K.*"</literal
> se desejar procurar todas as palavras que comecem com a letra K. Os caracteres que se seguem são interpretados de uma forma especial: </para>

<informaltable>
<tgroup cols="2">
<tbody>

<row
><entry>
  <literal
>.</literal>
</entry
><entry
>Corresponde a um carácter qualquer </entry
></row>
<row
><entry>
  <literal
>^</literal>
</entry
><entry
>Corresponde ao início de uma linha </entry
></row>
<row
><entry>
  <literal
>$</literal>
</entry
><entry
>Corresponde ao fim de uma linha </entry
></row>
<row
><entry>
  <literal
>\&lt;</literal>
</entry
><entry
>Corresponde ao início de uma palavra </entry
></row>
<row
><entry>
  <literal
>\&gt;</literal>
</entry
><entry
>Corresponde ao fim de uma palavra </entry
></row>
<row
><entry>
  <literal
>?</literal>
</entry
><entry
>O item anterior aparece menos de uma vez </entry
></row>
<row
><entry>
  <literal
>*</literal>
</entry
><entry
>O item anterior aparece zero ou mais vezes </entry
></row>
<row
><entry>
  <literal
>+</literal>
</entry
><entry
>O item anterior aparece uma ou mais vezes </entry
></row>
<row
><entry>
  <literal
>{n}</literal>
</entry
><entry
>O item anterior aparece exactamente 'n' vezes </entry
></row>
<row
><entry>
  <literal
>{n,}</literal>
</entry
><entry
>O item anterior aparece 'n' ou mais vezes </entry
></row>
<row
><entry>
  <literal
>{,n}</literal>
</entry
><entry
>O item anterior aparece menos de 'n' vezes </entry
></row>
<row
><entry>
  <literal
>{n,m}</literal>
</entry
><entry
>O item anterior aparece pelo menos <literal
>n</literal
> vezes mas menos de <literal
>m</literal
> vezes  </entry
></row>

</tbody>
</tgroup>
</informaltable>

<para
>As referências anteriores às expressões entre parêntesis estão também disponíveis com a notação <literal
>\n</literal
>. </para>

<para
>Para os programadores de C++, como bónus especial, existem alguns padrões de procura disponíveis para os padrões típicos. Estes permitem-lhe, por exemplo, procurar por todas as chamadas de funções-membro de um dado objecto. </para>

<para
>Logo que inicie a procura ao carregar no botão <guibutton
>Procurar</guibutton
>, ela será efectuada por um processo assíncrono exterior. Todos os itens encontrados irão aparecer na janela <guilabel
>Grep</guilabel
>. Você poderá então saltar para os itens encontrados no sistema de ficheiros. Se você tiver modificado as versões deles no seu editor, você poderá ter algumas falhas de precisão no número de linha, ou poderá mesmo ter alguns itens inválidos &mdash; você poderá evitar isto se gravar os ficheiros todos de antemão. </para>

</sect2
> <!-- grep -->

</sect1
> <!-- searchinggrepping -->

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

<sect1 id="code-completion">
<title
>Completação de Código</title>

<para
>(... ainda não escrito ...) </para>
</sect1
> <!-- code-completion -->

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

<sect1 id="newfiles">
<title
>Criar Novos Ficheiros e Classes</title>

<para
>(... ainda não escrito ...) </para>

<sect2 id="newfiles-edittemplates">
<title
>Editar os Modelos</title>

<para
>(... ainda não escrito ...) </para>
</sect2
> <!-- newfiles-edittemplates -->

</sect1
> <!-- newfiles -->

</chapter
> <!-- editing -->

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

<chapter id="file-browsers">
<title
>Os Navegadores de Ficheiros</title>

<para
>Do lado esquerdo da janela principal, o &kdevelop; poderá mostrar os vários tipos de listas e árvores para a selecção dos ficheiros: </para>

<itemizedlist>
<listitem>
<formalpara>
<title
>Árvore de Ficheiros</title>
<para
>Esta mostra uma árvore da hierarquia de ficheiros sob a directoria do projecto. Se você carregar num ficheiro, este é aberto no editor. Para os ficheiros que não contenham texto, o KDevelop inicia uma aplicação que consiga lidar com o tipo MIME respectivo. </para>
</formalpara>

<para
>A árvore de ficheiros é actualizada regularmente sempre que algo se altera no sistema de ficheiros. Por exemplo, se você criar novos ficheiros ou directorias (mesmo fora do &kdevelop;), isto é reflectido automaticamente na lista de ficheiros. No Linux, esta funcionalidade tira partido da biblioteca FAM. Nos outros sistemas operativos ou sobre o NFS, as directorias apresentadas são percorridas em intervalos pequenos. </para>

<para
>A árvore de ficheiros esconde os ficheiros que normalmente não são interessantes, como os ficheiros-objecto. Nas <guimenuitem
>Opções do projecto</guimenuitem
> em <guibutton
>Grupos de ficheiros</guibutton
>, você poderá configurar (como uma lista separada por vírgulas de caracteres especiais) quais os padrões que são usados para filtrar os ficheiros irrelevantes. </para>

<para
>Para além disso, poderá optar por restringir apenas aos ficheiros que pertençam ao projecto aberto de momento. Isto poderá ser activado ou desactivado se carregar com o &RMB; do item de base da árvore. </para>

<figure id="screenshot-filetree" float="1">
<title
>Uma Imagem da Árvore de Ficheiros</title>
<mediaobject>
<imageobject
><imagedata fileref="filetree.png"/></imageobject>
</mediaobject>
</figure>

</listitem>

<listitem>
<formalpara>
<title
>Grupos de Ficheiros</title>
<para
>Isto mostra os ficheiros que pertencem ao projecto, agrupados pela sua extensão dos nomes de ficheiros. Tal como na árvore de ficheiros, você poderá editar um se carregar nele com o &LMB;. </para>
</formalpara>

<para
>Os grupos mostrados nesta janela poderão ser configurados na opção <guibutton
>Grupos de ficheiros</guibutton
> da janela <guimenuitem
>Opções do projecto</guimenuitem
>. Para poder personalizar a janela de acordo com as suas necessidades, é útil compreender como é que os ficheiros se distribuem nos grupos. Para cada ficheiro, o &kdevelop; percorre todos os grupos de cima para baixo. Em cada grupo, ele verifica se o nome do ficheiro corresponde a um dos padrões. Se existir uma ocorrência, o ficheiro é mostrado neste grupo e a iteração termina. Isto ajuda a perceber que os padrões mais genéricos deverão ser colocados por baixo dos mais específicos. Por exemplo, o asterisco para o grupo <guilabel
>Outros</guilabel
> deverá ser o último padrão. </para>

</listitem>

</itemizedlist>

</chapter
> <!-- file-browsers -->

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

<chapter id="class-browsers">
<title
>Os Navegadores de Classes</title>
<indexterm zone="class-browsers"
><primary
>navegador de classes</primary
></indexterm>

<para
>Ao trabalhar num projecto com uma linguagem orientada por objectos, a sua atenção ao trabalhar no projecto não é colocada nos ficheiros de código e nos seus nomes, mas sim nas classes e nas relações entre elas. Para o ajudar a navegar pelo espaço de classes e símbolos definidos, o &kdevelop; inclui vários navegadores de classes que visualizam a estrutura de classes de várias formas diferentes. </para>

<sect1 id="classview">
<title
>Vista de Classe</title>

<para
>Esta janela é vista do lado esquerdo da janela principal e contém uma lista linear de todas as classes, variáveis e funções do seu projecto. É desenhada em árvore. Se você abrir o nó de uma classe ao carregar nele, irá aparecer uma lista com todos os métodos e atributos da classe respectiva. </para>

<figure id="screenshot-classview" float="1">
<title
>Uma Imagem da Janela de Classes</title>
<mediaobject>
<imageobject
><imagedata fileref="classview.png"/></imageobject>
</mediaobject>
</figure>

<para
>A janela de classes funciona de dois modos diferentes. Por omissão, todos os símbolos são agrupados em <quote
>Classes</quote
>, <quote
>Estruturas</quote
>, <quote
>Funções</quote
>, <quote
>Variáveis</quote
> e <quote
>Namespaces</quote
>. No menu de contexto da janela, você poderá optar por <guimenuitem
>Listar por 'Namespaces'</guimenuitem
>. Neste modo, a hierarquia de espaços de nomes ou 'namespaces' é apresenta e os símbolos são agrupados no espaço de nomes respectivo em que estão definidos. Isto poderá ser útil para os projectos que façam um uso intensivo de espaços de nomes (aninhados). É menos útil nos projectos que não tiram partido deles. </para>

<para
>Você poderá também alterar a forma como sao apresentados os nomes das classes. Normalmente, os nomes das classes são mostrados sem o 'namespace' (espaço de nomes) em que estão definidos. Isto significa que você não poderá distinguir imediatamente as classes com o mesmo nome em 'namespaces' diferentes. Se você deixar algum tempo o cursor do rato em cima de um item, o nome completo é mostrado como uma dica. Você poderá optar por mostrar sempre o nome completo se escolher <guimenuitem
>Nomes completos dos identificadores</guimenuitem
> no menu de contexto. </para>

<para
>Se carregar numa classe ou num método da mesma, aparece-lhe a sua definição. Você também poderá saltar para a declaração de um método se escolher <guimenuitem
>Ir para a declaração</guimenuitem
> no menu de contexto. No mesmo menu, para as classes, existem também os métodos <guimenuitem
>Adicionar um método...</guimenuitem
> e <guimenuitem
>Adicionar um atributo...</guimenuitem
>. Isto abre algumas janelas, onde você poderá gerar novas declarações de métodos e variáveis na classe respectiva, em conjunto com uma implementação vazia. </para>

</sect1
> <!-- classview -->

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

<sect1 id="classtools">
<title
>Ferramentas de Classes</title>

<para
>A janela da ferramenta de classes é activada se carregar com o botão direito do rato numa classe da janela de classes e se escolher a opção <guimenuitem
>Ferramenta de classes...</guimenuitem
>. </para>

</sect1
> <!-- classtools -->

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

<sect1 id="classhierarchy">
<title
>Hierarquia de Classes</title>

<para
>(... ainda não escrito ...) </para>

</sect1
> <!-- classhierarchy -->

</chapter
> <!-- class-browsers -->

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

<chapter id="documentation">
<title
>Documentação</title>

<para
>A documentação, infelizmente, pertence às questões de programação mais descuidadas. De qualquer forma, desde que esteja configurada correctamente e mantida actualizada, a documentação interna e externa oferece uma ajuda valiosíssima. </para>
<para
>A documentação tem várias facetas. Existe <itemizedlist>
  <listitem
><para
>a <emphasis
>documentação interna do projecto</emphasis
>, que consiste principalmente em <itemizedlist>
    <listitem
><para
><emphasis
>comentários</emphasis
> nos ficheiros de código/inclusão </para
></listitem>
    <listitem
><para
><emphasis
>documentação interna da API</emphasis
> do seu projecto, gerada a partir do ficheiro do programa com ferramentas especiais, como &eg;, o &doxygen; </para
></listitem>
  </itemizedlist>
  </para
></listitem>
  <listitem
><para
><emphasis
>documentação externa do projecto</emphasis
>, que contém, entre outras <itemizedlist>
    <listitem
><para
>a <emphasis
>documentação externa da API</emphasis
> de p.ex. as bibliotecas comuns do sistema (do <application
>KDE</application
>, do <application
>Qt</application
>, etc.) </para
></listitem>
    <listitem
><para
>qualquer outra documentação (manuais de programação de uma linguagem, informação geral do sistema, artigos HowTo, entre outros) </para
></listitem>
  </itemizedlist>
  </para
></listitem>
</itemizedlist>
</para>
<para
>Toda esta documentação deverá ser mantida facilmente e pronta a usar sempre que necessitar. O &kdevelop; tem a possibilidade de o fazer. </para>

<!-- ### doc browser, notes on internal documentation, how to profit from Doxygen -->

<sect1 id="docbrowser">
<title
>O Navegador da Documentação</title>


<figure id="screenshot-doctreeview" float="1">
<title
>Uma Imagem da Árvore de Documentação</title>
<mediaobject>
<imageobject
><imagedata fileref="doctreeview.png"/></imageobject>
</mediaobject>
</figure>

</sect1
> <!-- docbrowser -->

</chapter
> <!-- documentation -->

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

&project-management; <!-- "Building and Project Management"                 -->

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

<chapter id="adv-build-management">
<title
>Gestão Avançada de Compilações</title>
<indexterm zone="adv-build-management"
><primary
>&automake;</primary
></indexterm>

<sect1 id="buildconfigurations">
<title
>Configurações Múltiplas de Construção</title>
<indexterm zone="buildconfigurations"
><primary
>configurações da criação</primary
><secondary
>múltipla</secondary
></indexterm>

<para
>(... ainda não escrito ...) </para>

</sect1
> <!-- buildconfigurations -->

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

<sect1 id="crosscompiling">
<title
>Compilação Cruzada</title>
<indexterm zone="crosscompiling"
><primary
>compilação cruzada</primary
></indexterm>
<indexterm zone="crosscompiling"
><primary
>compilação</primary
><secondary
>cruzada</secondary
></indexterm>
<indexterm zone="crosscompiling"
><primary
><option
>--host</option
></primary
></indexterm>

<para
>Se tiver compiladores cruzados ('cross-compilers') disponíveis, você poderá compilar os seus programas para processadores e sistemas operativos diferentes do sistema em que o &kdevelop; e o compilador estão a correr. A colecção de compiladores da &GNU; &gcc; pode ser configurada e compilada como um compilador cruzado se você o compilar você próprio. Consulte as <ulink url="info://gcc/Cross-Compiler"
>páginas de 'info' do GCC</ulink
> para mais informações. Algumas distribuições do Linux também fornecem pacotes binários. </para>

<para
>Um pacote baseado no 'automake' poderá ser compilado de forma cruzada facilmente se indicar a opção <option
>--host</option
> no programa 'configure' e se configurar as variáveis de ambiente <envar
>CC</envar
> e <envar
>CXX</envar
> para os executáveis dos compiladores cruzados. Você poderá querer mudar frequentemente entre uma compilação cruzada da sua aplicação e outra compilada para o seu sistema de desenvolvimento. Para isso, é uma vantagem usar a capacidade do &kdevelop; de gerar várias configurações de compilação, como é explicado em <xref linkend="buildconfigurations"/>. Logo que você tenha criado uma nova configuração de compilação para compilações cruzadas na janela <menuchoice
><guimenu
>Projecto</guimenu
> <guimenuitem
>Opções do Projecto...</guimenuitem
></menuchoice
>, adicione a opção </para>

<para
><screen
><option
>--host=</option
><replaceable
>plataforma</replaceable
>
</screen
></para>

<para
>às opções do 'configure'. O nome da <replaceable
>plataforma</replaceable
> é um tuplo no formato </para>

<programlisting
>cpu-distribuicao-so</programlisting>
<para
>ou</para>
<programlisting
>cpu-distribuicao-kernel-so</programlisting>

<para
>Para várias combinações, você poderá usar um formato mais curto, como por exemplo <wordasword
>i386-linux</wordasword
> ou <wordasword
>arm-elf</wordasword
>. </para>

</sect1
> <!-- crosscompiling -->

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

<sect1 id="qtembedded">
<title
>Qt/Embedded</title>
<indexterm zone="qtembedded"
><primary
>embebido</primary
><secondary
>Qt</secondary
></indexterm>
<indexterm zone="qtembedded"
><primary
>Qt/Embedded</primary
></indexterm>
<indexterm zone="qtembedded"
><primary
>Qtopia</primary
></indexterm>
<indexterm zone="qtembedded"
><primary
>'framebuffer'</primary
></indexterm>

<para
>O &qte; é uma versão da biblioteca &Qt; que não usa o sistema de janelas do X, mas desenha directamente no 'framebuffer' dos sistemas Linux. É por isso interessante para os sistemas embebidos que tenham grandes restrições sobre a utilização da memória de todo o sistema. A sua API é completamente compatível com a da versão para X11. </para>

<para
>Programar uma aplicação para o &qte; com o &kdevelop; não é muito diferente de programar com a versão para X11 do &Qt;. De facto, você poderá usar o mesmo código para ambas as versões. Se usar a gestão de projectos do Autoproject, você poderá mudar para a versão embebida se passar o argumento <option
>--enable-embedded</option
> ao programa 'configure'. Você poderá indicar isto na janela <menuchoice
><guimenu
>Projecto</guimenu
> <guimenuitem
>Opções do Projecto...</guimenuitem
></menuchoice
> em <guilabel
>Opções do 'Configure'</guilabel
>. Com a opção <option
>--with-qt-dir=DIR</option
>, você indica a directoria em que o &qte; está instalado. </para>

<para
>Depois de configurar e compilar a sua aplicação com estas opções, ela irá compilar com a biblioteca <filename
>libqpe.so</filename
>. Esta versão da sua aplicação não irá correr normalmente quando você usar o X11. Para a poder testar, execute-a sob o controlo do programa <application
>qvfb</application
> (Qt Virtual Frame Buffer). Isto é feito, iniciando o <application
>qvfb</application
> e depois iniciando a sua aplicação com </para>

<para
><screen
><command>
aplicacao <option
>-qws</option
> <option
>-display QVFb:0</option>
</command
></screen
></para>

<para
>Naturalmente, quando você tiver uma versão funcional da sua aplicação, você irá querer usá-la no processador de destino. Para isso, será provavelmente melhor criar várias configurações de compilação, tal como foi explicado acima, para que você possa mudar rapidamente entre a versão a correr no seu sistema de desenvolvimento e a versão que está a correr no sistema-alvo. </para>

<para
>As aplicações para o &qte; normalmente correm como aplicações únicas no dispositivo para que foram desenhadas. A Trolltech também suporta o Qtopia, que é uma colecção de aplicações para PIM, navegação na Web e para outras áreas diversas e que trabalham em conjunto de forma consistente. É o ambiente padrão, por exemplo, do Sharp Zaurus. Você poderá criar aplicações que integram com este ambiente se usar o SDK do Qtopia. Isto implica que a classe da sua aplicação seja uma sub-classe de <classname
>QPEApplication</classname
> e compile com a biblioteca <filename
>libqpe.so</filename
>. Se você desenvolver a sua aplicação com a gestão de projectos do Autoproject, você terá de adicionar a opção <option
>--enable-qtopia</option
> às opções do 'configure'. </para>

</sect1
> <!-- qtembedded -->

</chapter
> <!-- adv-build-management -->

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

<chapter id="debugger">
<title
>A Interface de Depuração</title>
<indexterm zone="debugger"
><primary
>depuração</primary
></indexterm>

<para
>Para o C e o C++, o &kdevelop; contém um depurador interno que está directamente integrado com o editor. Tecnicamente, está implementado como uma interface que usa o depurador portável da &GNU; <application
>gdb</application
> através de um 'pipe'. O depurador poderá ser iniciado de várias formas: </para>

<itemizedlist>
<listitem>
<para
>Com o <menuchoice
><guimenu
>Depurar</guimenu
><guimenuitem
>Iniciar</guimenuitem
></menuchoice
>, o programa principal do seu projecto é carregado no depurador. </para>
</listitem>

<listitem>
<para
>Se usar o <menuchoice
><guimenu
>Depurar</guimenu
> <guimenuitem
>Iniciar (outro)</guimenuitem
> <guimenuitem
>Examinar o ficheiro 'core'</guimenuitem
></menuchoice
> você irá carregar um ficheiro 'core', que é gerado pelo 'kernel' do sistema operativo quando o programa tiver estoirado (A geração dos ficheiros 'core' poderá estar desligada no seu sistema; veja em <application
>ulimit(1)</application
>). Isto é útil para uma análise 'post-mortem' de um programa. </para>
</listitem>

<listitem>
<para
>Com o <menuchoice
><guimenu
>Depurar</guimenu
> <guimenuitem
>Iniciar (outro)</guimenuitem
> <guimenuitem
>Anexar ao processo</guimenuitem
></menuchoice
>, você irá invocar o depurador sobre um programa já em execução. Ser-lhe-á mostrada uma lista dos processos, onde você poderá seleccionar o processo que o depurador deverá ocupar. </para>
</listitem>

<listitem>
<para
>Lembre-se que a depuração só é possível se o seu projecto tiver sido compilado com as informações de depuração activas. Elas poderão ser activadas na janela de <guibutton
>Opções do compilador</guibutton
>. Quando esta opção estiver activada, o compilador gera dados adicionais que permitem ao depurador associar os nomes dos ficheiros e os números de linhas aos endereços no executável. </para>
</listitem>
</itemizedlist>

<para
>A interface do depurador oferece várias vistas <quote
>dentro</quote
> do processo: </para>

<itemizedlist>
<listitem>
<formalpara>
<title
>Variáveis</title>
<indexterm zone="debugger"
><primary
>vigiar variáveis</primary
></indexterm>
<para
>Esta janela lista os valores de todas as variáveis locais do ponto de execução actual do programa. Ele cobre as variáveis na pilha de chamadas completa, i.e., a função em que o processo foi interrompido, a função que chamou esta função, e assim por diante, até à função <function
>main()</function
>. </para>
</formalpara>

<para
>Outro ramo das variáveis contém as variáveis de vigia. Poderá configurar você mesmo quais as variáveis que são mostradas aqui. Tanto poderão ser vigiadas as variáveis globais como as locais. Você poderá adicionar as variáveis, quer carregando no botão <guibutton
>Adicionar</guibutton
> quer carregando em <keycap
>RETURN</keycap
>, enquanto o item <guilabel
>Vigia</guilabel
> está seleccionado. Elas poderão ser removidas também através do menu de contexto. </para>
</listitem>

<listitem>
<formalpara>
<title
>Pontos de Paragem</title>
<indexterm zone="debugger"
><primary
>pontos de paragem</primary
></indexterm>
<para
>(... ainda não escrito ...) </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Pilha de Chamadas</title>
<indexterm zone="debugger"
><primary
>pilha de chamadas</primary
></indexterm>
<para
>(... ainda não escrito ...) </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Descodificação</title>
<indexterm zone="debugger"
><primary
>descodificação</primary
></indexterm>
<para
>(... ainda não escrito ...) </para>
</formalpara>
</listitem>

</itemizedlist>


<sect1 id="settingbreakpoints">
<title
>Colocar Pontos de Paragem</title>

<para
>(... ainda não escrito ...) </para>

</sect1
> <!-- settingbreakpoints -->

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

<sect1 id ="debuggeroptions">
<title
>Opções</title>

<formalpara>
<title
>Mostrar os Nomes Codificados</title>
<indexterm zone="debugger"
><primary
>codificação do nome</primary
></indexterm>
<indexterm zone="debugger"
><primary
>codificação</primary
><secondary
>nome</secondary
></indexterm>

<para
>No C++, os nomes das funções no executável estão <quote
>codificados</quote
>, i.e, os nomes das funções incluem a informação sobre os tipos de argumentos. Isto é necessário para poder suportar as funções com vários tipos de argumentos. O algoritmo de codificação não está normalizado e difere mesmo entre versões diferentes do compilador de C++ da &GNU;. </para>
</formalpara>

<para
>Na janela de descodificação, são mostrados normalmente os nomes descodificados ou 'limpos', por isso as assinaturas das funções aparecem tal e qual aparecem no código-fonte, por isso são fáceis de ler. Em alternativa, você poderá optar por ver os nomes codificados. </para>

<formalpara>
<title
>Tentar Definir Pontos de Paragem no Carregamento da Biblioteca</title>
<indexterm zone="debugger"
><primary
>pontos de paragem "preguiçosos"</primary
></indexterm>
<indexterm zone="debugger"
><primary
>pontos de paragem</primary
><secondary
>"preguiçoso"</secondary
></indexterm>

<para
>A infra-estrutura do depurador <application
>gdb</application
> não permite definir pontos de paragem em código que não esteja carregado de momento. Numa aplicação altamente modular, em que normalmente o código só é carregado a pedido como um 'plugin' (usando a função da 'libc' <function
>dlopen(3)</function
>), isto poderá ser bastante inconveniente. Como tal, o &kdevelop; implementa o seu suporte próprio para os pontos de paragem nas bibliotecas dinâmicas. Se você definir esta opção, ela permitir-lhe-á definir pontos de paragem nas bibliotecas que não estiverem carregadas. Aí, sempre que o <application
>gdb</application
> notificar que uma biblioteca está carregada, o &kdevelop; tentará atribuir os pontos de paragem pendentes. </para>
</formalpara>

<formalpara>
<title
>Activar a Barra de Ferramentas Flutuante</title>
<indexterm zone="debugger"
><primary
>barra de depuração</primary
></indexterm>
<indexterm zone="debugger"
><primary
>barra de ferramentas</primary
><secondary
>depuração</secondary
></indexterm>

<para
>(... ainda não escrito ...) </para>
</formalpara>

</sect1
> <!-- debuggeroptions -->

</chapter
> <!-- debugger -->

<!-- ====================================================================== -->
<!-- ### Questionable, probably not IDE-specific enough. Check later again.
<chapter id="python">
<title
>Python</title>

<para
>...
</para>

</chapter
> --> <!-- python -->

<!-- ====================================================================== -->
<!-- ### Questionable, probably not IDE-specific enough. Check later again.
<chapter id="php">
<title
>PHP</title>

<para
>...
</para>
</chapter
> --> <!-- php -->

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

<chapter id="cvs">
<title
>Usar o CVS</title>
<indexterm zone="cvs"
><primary
>CVS</primary
></indexterm>
<indexterm zone="cvs"
><primary
>controlo de revisões (versões)</primary
></indexterm>

<sect1 id="cvs-basics">
<title
>Bases do &CVS;</title>

<para
>O &CVS; é o sistema de controlo de versões que vários projectos de código-livre - incluindo o &kde; &mdash; usam de momento. Ele armazena todo o código num local central, chamado de <emphasis
>repositório</emphasis
>. A partir do repositório, os programadores poderão extrair (fazer um 'checkout') de uma versão actual do projecto ou de imagens do mesmo em alturas arbitrárias no tempo. Em contraste com outros sistemas de controlo de versões, não é necessário <emphasis
>bloquear</emphasis
> os ficheiros onde uma pessoa deseja trabalhar. Por isso, o trabalho pode ser altamente paralelizado. </para>

<para
>Sempre que um programador terminou uma tarefa, ele irá <emphasis
>enviar</emphasis
> (fazer um 'commit') do seu código (acompanhado com uma mensagem de registo). O &CVS; tem a tarefa de reunir as alterações feitas pelos vários programadores. Poderá acontecer, obviamente, que os programadores trabalhem no mesmo pedaço de código, o que irá resultar num conjunto de alterações em conflito (na prática, isto acontece raramente, e é normalmente um sinal de falta de comunicação). Neste caso, o &CVS; irá rejeitar o envio, até que todos os conflitos sejam resolvidos para então poder enviar as alterações dos ficheiros. </para>

<para
>Até agora, isto tem sido uma descrição das funcionalidades básicas do &CVS; com que uma pessoa terá de lidar. Mas o &CVS; pode fazer muito mais: Uma pessoa poderá manter várias ramificações de um projecto (p.ex., o &kde; 1.1.2 e o &kde; 2 eram ramificações da árvore de desenvolvimento do &kde;), reunir as alterações de uma ramificação noutra, pedir as diferenças entre versões, o histórico das versões de um ficheiro, &etc;. </para>

<para
>O &CVS; está implementado como um sistema cliente/servidor. Como utilizador, toda a comunicação com o repositório vai através do programa da linha de comandos &cvs;. Está disponível uma interface de utilizador de nível mais alto através de aplicações como o <application
>Cervisia</application
> (<ulink url="http://cervisia.sf.net"
></ulink
>) ou o <application
>TkCVS</application
> (<ulink url="http://tkcvs.sf.net"
></ulink
>). No &kdevelop;, só uma pequena parte da funcionalidade do &cvs; que é importante para o seu dia-a-dia é que poderá ser usada directamente. </para>

<para
>Assume-se um conhecimento básico da utilização do &CVS;. Em particular, você deverá saber como obter um projecto por completo do repositório. Recomenda-s eo livro <quote
>Open Source Development With CVS</quote
> de Karl Fogel, o qual está disponível publicamente (excepto os capítulos não-técnicos). Veja o <ulink url="http://cvsbook.red-bean.com/cvsbook.html"
></ulink
>. </para>

</sect1
> <!-- cvs-basics -->

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

<sect1 id="cvs-commands">
<title
>Comandos do &CVS; no &kdevelop;</title>

<para
>Nas janelas dos ficheiros, estão disponíveis os seguintes itens do menu de contexto: </para>

<itemizedlist>

<listitem>
<formalpara>
<title
>Adicionar ao Repositório</title>
<para
>Prepara o ficheiro marcado para ser adicionado ao repositório. O ficheiro é transferido de facto para o repositório quand o enviar (fizer um 'commit') ou da directoria que o contém, da próxima vez. </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Remover do Repositório</title>
<para
>Prepara um ficheiro para ser removido do repositório. Isto também remove o ficheiro do sistema de ficheiros local, como tal use esta funcionalidade com cuidado! </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>'Update'</title>
<para
>Invoca o <command
>cvs update</command
> para reunir as alterações dos outros utilizadores com a versão na sua directoria de trabalho. Quando você usar este item de menu numa directoria, a operação de actualização irá ocorrer de forma recursiva, excepto se você tiver desactivado isto no ficheiro de configuração <filename
>.cvsrc</filename
>. </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>'Commit'</title>
<para
>Invoca o <command
>cvs commit</command
> para enviar as alterações feitas localmente para o repositório. Lembre-se que você deverá actualizar os ficheiros, antes de fazer isto. Caso contrário, quando outro utilizador tiver enviado as alterações dele anteriormente, o &CVS; poder-lhe-á mostrar uma mensagem de erro. </para>
</formalpara>
</listitem>

</itemizedlist>

<para
>Todos este comandos são invocados como sub-processos pelo &kdevelop; sem ter quaisquer opções da linha de comandos ou variáveis de ambiente. Isto poderá ser um problema quando a ligação com o servidor do &CVS; vai através de uma ligação por &ssh; e necessita que você indique a sua senha de cada vez que você faz 'commit' (envia as alterações) ou 'update' (obtém as alterações dos outros). Isto é necessário, por exemplo, quando o seu projecto está alojado no <filename
>sourceforge.net</filename
>. Algumas possíveis soluções para este problemas estão descritas na FAQ do CVS/SSH, a qual poderá encontrar na documentação do SourceForge. </para>

</sect1
> <!-- cvs-basics -->

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

<sect1 id="cvs-behind">
<title
>Nos Bastidores</title>

<sect2 id="cvs-behind-workdir">
<title
>O Que o &CVS; Regista na Directoria de Trabalho</title>

<para
>(... ainda não escrito ...) </para>
</sect2
> <!-- cvs-behind-workdir -->

</sect1
> <!-- cvs-behind -->

</chapter
> <!-- cvs -->

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

<chapter id="external-progs">
<title
>Lidar com os Programas Externos</title>
<indexterm zone="external-progs"
><primary
>programas</primary
><secondary
>externos</secondary
></indexterm>

<para
>Ainda que o &kdevelop; seja um ambiente de desenvolvimento <quote
>integrado</quote
>, ele nunca irá conter todas as funcionalidades que você deseja usar, e as capacidades do seu editor nunca serão suficientes para efectuar as tarefas dos processadores de texto usados frequentemente. Como um programa genuíno do &UNIX;, o &kdevelop; contém várias possibilidades para iniciar programas externos, programas em 'plugins' externos que lidam com os ficheiros, ou usar filtros externos para processar o conteúdo do editor. </para>

<para
>A funcionalidade mais genérica e simples deste tipo é o menu de ferramentas, que você poderá configurar livremente. Isto é feito na janela em <menuchoice
><guimenu
>Configuração</guimenu
> <guimenuitem
>Configurar o KDevelop...</guimenuitem
></menuchoice
> nas <guibutton
>Ferramentas externas</guibutton
>. </para>

<para
>As outras ferramentas serão discutidas no capítulo <xref linkend="plugin-tools"/>. </para>

</chapter
> <!-- external-progs -->


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

<chapter id="credits">
<title
>Créditos</title>

<sect1 id="credits-contributions">
<title
>Contribuições</title>

<para>
<itemizedlist>
  <listitem
><para
>O conteúdo inicial deste manual foi escrito pelo Bernd Gehrmann <email
>bernd@kdevelop.org</email
> e pelo Caleb Tennis <email
>caleb@aei-tech.com</email
>. </para
></listitem>
  <listitem
><para
>O <link linkend="automake-manager-summary"
>Resumo do &automanag;</link
> e da <link linkend="automake-manager-operation"
>Operação com o Gestor Automake</link
> foram escritos por Ian Wadham, <email
>ianw@netspace.net.au</email
>). </para
></listitem>
</itemizedlist>
</para>

</sect1
> <!-- credits-contributions -->

<!--CREDITS_FOR_TRANSLATORS-->

</chapter
> <!-- credits -->

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

&app-menu; <!-- Menus and Toolbars Overview -->

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

<appendix id="app-shortcuts">
<title
>Teclas de Atalho</title>

<para
>(... ainda não escrito ...) </para>

</appendix
> <!-- app-shortcuts -->

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

&app-files; <!-- Configuration Files Used by &kdevelop; -->

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

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

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

<para
>O &kdevelop; contém um grande número de pequenas ferramentas que o ajudam a efectuar uma dada tarefa. A maior parte delas está implementada como um 'plugin'. Isto significa que, se não gostar de uma delas, poderá simplesmente desactivá-la na janela de <guimenuitem
>Opções do projecto</guimenuitem
> em <guibutton
>'Plugins'</guibutton
> (para os 'plugins' ao nível do projecto) ou em <menuchoice
><guimenu
>Configuração</guimenu
> <guimenuitem
>Configurar o KDevelop...</guimenuitem
></menuchoice
>. Os 'plugins' que estiverem desligados não enchem os seus menus e não são carregados para a memória. </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 pedaços de código usados com frequência. Ele é activado se carregar em <keycombo
><keycap
>Ctrl</keycap
> <keycap
>Espaço</keycap
></keycombo
>. Por exemplo se você introduzir <literal
>"ife"</literal
> num ficheiro de C++ no editor e carregar em <keycombo
><keycap
>Ctrl</keycap
><keycap
>Espaço</keycap
></keycombo
>, você irá obter um modelo de código <literal
>if-else</literal
> e poupar alguma escrita. O conjunto de abreviaturas suportadas depende da linguagem de programação do ficheiro editado. Por exemplo, para o PHP você irá obviamente estar interessado em modelos de código diferentes dos do &Java;. </para>
</formalpara>

<para
>O conjunto de modelos de código é configurável. Você poderá ver quais os que estão disponíveis na janela <menuchoice
><guimenu
>Configuração</guimenu
> <guimenuitem
>Configurar o KDevelop...</guimenuitem
></menuchoice
> em <guibutton
>Abreviaturas</guibutton
> </para>
</listitem>

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

<para
>Isto oferece duas funcionalidades. Se você seleccionar o <menuchoice
><guimenu
>Ferramentas</guimenu
> <guimenuitem
>Executar um comando</guimenuitem
></menuchoice
>, você poderá indicar um comando da linha de comandos. O resultado deste comando será introduzido no texto do editor quando carregar no botão <guibutton
>Iniciar</guibutton
>. </para>
</formalpara>

<para
>Uma funcionalidade relacionada está disponível em <menuchoice
><guimenu
>Ferramentas</guimenu
><guimenuitem
>Filtrar a Selecção pelo Comando...</guimenuitem
></menuchoice
>. Para poder usar isto, você precisa de seleccionar uma área de texto no editor. Se você agora indicar um comando da linha de comandos e carregar no botão <guibutton
>Iniciar</guibutton
>, o comando é iniciado e a selecção é passada para o comando em si. O resultado do comando é então introduzido no editor. </para>
</listitem>

<listitem>
<formalpara>
<title
>O 'plugin' de &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 ajuda a usar a ferramenta de documentação da API &doxygen; (<ulink url="http://www.doxygen.org"
></ulink
>). Você poderá seleccionar <menuchoice
><guimenu
>Projecto</guimenu
> <guimenuitem
>Correr o Doxygen</guimenuitem
></menuchoice
> para gerar a documentação da API para o seu projecto actual, baseado na configuração dada pelo ficheiro <filename
>Doxyfile</filename
> na directoria do seu projecto. </para>
</formalpara>

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

<listitem>
<formalpara>
<title
>O 'plugin' &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, você poderá também querer usar a ferramenta 'ctags'. Em particular, esta suporta mais linguagens que o navegador de classes. </para>
</formalpara>

<para
>Você activa este 'plugin' em <menuchoice
><guimenu
>Ferramentas</guimenu
> <guimenuitem
>CTags...</guimenuitem
></menuchoice
>. Quando o iniciar da primeira vez, você será pedido para gerar uma base de dados de procura em primeiro lugar. Quando aceitar isto, o programa &ctags; irá então ser iniciado e gerará um ficheiro chamado <filename
>tags</filename
> na directoria do seu projecto. Este é um ficheiro de texto que contém todos os símbolos dos seus ficheiros de código. </para>

<para
>Você poderá pesquisar na base de dados dos símbolos de duas formas: quando a opção <guilabel
>Corresponder com a expressão regular</guilabel
> estiver assinalada, o texto que você introduzir será interpretado como uma expressão regular (na variante do POSIX) e será correspondida com os 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á textual. </para>

<para
>Ao pesquisar, você irá obter uma lista com os símbolos correspondentes, acompanhados dos números de linha em que estão definidos. Você poderá saltar para o ponto respectivo se carregar na lista. </para>

<para
>Para algumas linguagens, o &ctags; distingue os diferentes tipos de símbolos. Por exemplo, o Python tem classes e funções. Você poderá procurar de forma selectiva apenas as classes, assinalando os tipos respectivos na janela. </para>

<para
>A base de dados de símbolos não é normalmente actualizada logo que o seu código seja alterado. Por consequência, ao fim de algum tempo, os números de linha não serão mais correctos e as classes e as funções adicionadas como novas estarão em falta. Como tal, você deverá actualizar o ficheiro <filename
>tags</filename
> em intervalos regulares, carregando no botão <guibutton
>Recriar</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
>(... ainda não escrito ...) </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ão regulares</primary
><secondary
>depuração</secondary
></indexterm>

<para
>O desenho de expressões regulares poderá ser bastante trabalhoso. Normalmente, a primeira tentativa de uma expressão regular corresponde a demasiadas sequências. Em particular, ao lidar com uma linguagem compilada, os tempos de reiterações ao depurar uma expressão regular poderão ser impossíveis. O 'plugin' 'regexptest' permite-lhe explorar directamente as alterações de uma expressão regular. Ele é activado ao escolher a opção <menuchoice
><guimenu
>Ferramentas</guimenu
> <guimenuitem
>Depurar a Expressão Regular...</guimenuitem
></menuchoice
>. </para>
</formalpara>

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

<para
>Quando introduzir uma expressão, você irá obter um resultado imediato sobre os erros de sintaxe da mesma. Se introduzir um texto em <guilabel
>Testar a sequência</guilabel
>, você poderá ver se a expressão regular corresponde a este texto. Em particular, se a sua expressão regular contiver grupos, como por exemplo <literal
>([a-z])</literal
>, o conteúdo dos sub-grupos correspondentes será mostrado numa lista. </para>
</listitem>

<listitem>
<formalpara>
<title
>O 'plugin' <command
>konsole</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>konsole</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>terminal</primary
><secondary
>embebido</secondary
></indexterm>

<para
>(... ainda não escrito ...) </para>
</formalpara>
</listitem>

</itemizedlist>

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

<sect1 id="parts-survey">
<title
>Introdução</title>

<para
>O &kdevelop; oferece módulos extensíveis ou componentes para serem carregados durante a execução e a pedido. Isto permite aos programadores só activar as funcionalidades que necessitam ou desejam para o seu desenvolvimento. </para>

<para
>Alguns dos componentes são considerados <link linkend="table-global-parts"
>globais</link
> &mdash; isto é, eles afectam toda a operação do &kdevelop;. Por exemplo, o componente 'uimode' permite a um programador escolher a interface de utilizador que deseja usar. </para>

<para
>Os outros componentes são <link linkend="table-project-parts"
>específicos do projecto</link
>, e só são utilizados quando um projecto desse tipo está carregado. O Gestor do Automake, por exemplo, só precisa de estar activo quando for carregado um projecto baseado no Automake. Caso contrário, este componente não estará activo. </para>

<para
>Os componentes activos poderão ter vários efeitos no &kdevelop;. Dependendo da sua função, eles poderão adicionar menus extra, itens de menu extra, botões de barras de ferramentas extra, etc. </para>

<table id="table-project-parts">
<title
>Componentes de Gestão de Projectos no &kdevelop;</title>

<tgroup cols="2"
><tbody>
<row>
  <entry
>antproject</entry>
  <entry
>Gestor de Projectos ANT (aplicações em &Java;)</entry>
</row>
<row>
  <entry
>autoproject</entry>
  <entry
>Gestor de Projectos Automake</entry>
</row>
<row>
  <entry
>customproject</entry>
  <entry
>Gestor de Projectos Personalizado</entry>
</row>
<row>
  <entry
>trollproject</entry>
  <entry
>Gestor de Projectos QMake</entry>
</row>
</tbody
></tgroup>
</table>

<table id="table-global-parts">
<title
>Partes Globais no &kdevelop;</title>

<tgroup cols="2"
><tbody>
<row
><entry
>Nome da Parte</entry
><entry
>Descrição</entry
></row>
<row
><entry
>appwizard</entry
><entry
>Assistente de Novo Projecto</entry
></row>
<row
><entry
>histórico</entry
><entry
></entry
></row>
<row
><entry
>konsole</entry
><entry
>Konsole Embebida</entry
></row>
<row
><entry
>editor-chooser</entry
><entry
>Escolhe um editor de texto interno</entry
></row>
<row
><entry
>doctreeview</entry
><entry
>Visualizador de Documentação</entry
></row>
<row
><entry
>openwith</entry
><entry
></entry
></row>
<row
><entry
>fileselector</entry
><entry
>Um selector de ficheiros</entry
></row>
<row
><entry
>uimode</entry
><entry
>Configurar o modo de interface gráfica </entry
></row>
<row
><entry
>texttools</entry
><entry
>Ferramentas de texto adicionais</entry
></row>
<row
><entry
>tipofday</entry
><entry
>Uma dica do dia</entry
></row>
<row
><entry
>grepview</entry
><entry
>Um utilitário de grep gráfico</entry
></row>
<row
><entry
>cvs</entry
><entry
>Suporte a CVS</entry
></row>
<row
><entry
>ferramentas</entry
><entry
></entry
></row>
<row
><entry
>regexptest</entry
><entry
>Ferramenta de testes a expressões regulares</entry
></row>
<row
><entry
>abbrev</entry
><entry
>Expansão de Abreviaturas</entry
></row>
<row
><entry
>filter</entry
><entry
></entry
></row>
<row
><entry
>valgrind</entry
><entry
>Uma interface gráfica para o Valgrind</entry
></row>
</tbody
></tgroup>
</table>

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

<table>
<title
>Componentes Específicas dos Projectos no &kdevelop;</title>
<tgroup cols="2"
><tbody>
<row
><entry
>astyle</entry
><entry
></entry
></row>
<row
><entry
>buglist</entry
><entry
></entry
></row>
<row
><entry
>classview</entry
><entry
>Gestor de Vista de Classes</entry
></row>
<row
><entry
>ctags</entry
><entry
></entry
></row>
<row
><entry
>debugger</entry
><entry
>Gestor do Depurador da &GNU;</entry
></row>
<row
><entry
>diff</entry
><entry
></entry
></row>
<row
><entry
>distpart</entry
><entry
></entry
></row>
<row
><entry
>doxygen</entry
><entry
></entry
></row>
<row
><entry
>fileview</entry
><entry
></entry
></row>
<row
><entry
>javadebugger</entry
><entry
></entry
></row>
<row
><entry
>manager</entry
><entry
></entry
></row>
<row
><entry
>nedit</entry
><entry
></entry
></row>
<row
><entry
>outputviews</entry
><entry
></entry
></row>
<row
><entry
>perforce</entry
><entry
></entry
></row>
<row
><entry
>qeditor</entry
><entry
></entry
></row>
<row
><entry
>scripting</entry
><entry
></entry
></row>
<row
><entry
>scriptproject</entry
><entry
></entry
></row>
<row
><entry
>sourcenav</entry
><entry
></entry
></row>
<row
><entry
>svn</entry
><entry
></entry
></row>
<row
><entry
>visualboyadvance</entry
><entry
></entry
></row>
<row
><entry
>windowmenu</entry
><entry
></entry
></row>
</tbody
></tgroup>
</table>

</sect1
> <!-- parts-survey -->

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

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

<appendix id="app-uimodes-examples">
<title
>Exemplo de Modos de Inteface de Utilizador do &kdevelop;</title>

<sect1 id="ideal-desc">
<title
>Modo IDEAl</title>

<para
>Carregue <link linkend="uimodes-survey"
>aqui</link
> para voltar à apresentação dos modos. </para>

<screenshot>
  <mediaobject>
    <imageobject>
      <imagedata fileref="kdevelop-ideal-mode.png" format="PNG"/>
    </imageobject>
    <textobject
><phrase
>Imagem</phrase
></textobject>
    <caption
><para
>Modo IDEAl do &kdevelop;</para
></caption>
  </mediaobject>
</screenshot>

<para
>Carregue <link linkend="uimodes-survey"
>aqui</link
> para voltar à apresentação dos modos. </para>

<screenshot>
  <mediaobject>
    <imageobject>
      <imagedata fileref="kdevelop-ideal-mode-0.png" format="PNG"/>
    </imageobject>
    <textobject
><phrase
>Imagem</phrase
></textobject>
    <caption
><para
>Modo IDEAl do &kdevelop;, páginas fechadas</para
></caption>
  </mediaobject>
</screenshot>

<para
>Esta imagem de exemplo demonstra uma das virtudes principais do modo IDEAl. Existe um espaço de trabalho máximo. De qualquer forma, qualquer janela de ferramentas está disponível prontamente se carregar na página respectiva. </para>
<para
>Você irá necessitar provavelmente de algum tempo para se acostumar aos ícones da barra de páginas. Se você se perder, basta posicionar o rato em cima de um separador de página e esperar alguns segundos. Irá aparecer uma breve dica descritiva. Nesta imagem, a dica do <quote
>Gestor do Automake</quote
> é apresentada como exemplo. Ela descreve a página inferior da barra de páginas da direita. </para>

<para
>Carregue <link linkend="uimodes-survey"
>aqui</link
> para voltar à apresentação dos modos. </para>

</sect1
> <!-- ideal-desc -->

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

<sect1 id="mdi-desc">
<title
>Modo de Janelas com Sub-molduras</title>

<para
>Carregue <link linkend="uimodes-survey"
>aqui</link
> para voltar à apresentação dos modos. </para>

<screenshot>
  <mediaobject>
    <imageobject>
    <imagedata fileref="kdevelop-mdi-mode.png" format="PNG"/>
    </imageobject>
    <textobject
><phrase
>Imagem</phrase
></textobject>
    <caption
><para
>Modo de janelas com sub-molduras do &kdevelop;</para
></caption>
  </mediaobject>
</screenshot>

<para
>Carregue <link linkend="uimodes-survey"
>aqui</link
> para voltar à apresentação dos modos. </para>

</sect1
> <!-- mdi-desc -->

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

<sect1 id="tabbed-desc">
<title
>Modo por Páginas</title>

<para
>Carregue <link linkend="uimodes-survey"
>aqui</link
> para voltar à apresentação dos modos. </para>

<screenshot>
  <mediaobject>
    <imageobject>
      <imagedata fileref="kdevelop-tabbed-mode.png" format="PNG"/>
    </imageobject>
    <textobject
><phrase
>Imagem</phrase
></textobject>
    <caption
><para
>Modo por Páginas do &kdevelop;</para
></caption>
  </mediaobject>
</screenshot>

<para
>Carregue <link linkend="uimodes-survey"
>aqui</link
> para voltar à apresentação dos modos. </para>

</sect1
> <!-- tabbed-desc -->

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

<sect1 id="toplevel-desc">
<title
>Modo de Janelas de Topo</title>

<para
>Carregue <link linkend="uimodes-survey"
>aqui</link
> para voltar à apresentação dos modos. </para>

<screenshot>
  <mediaobject>
    <imageobject>
      <imagedata fileref="kdevelop-toplevel-mode.png" format="PNG"/>
    </imageobject>
    <textobject
><phrase
>Imagem</phrase
></textobject>
    <caption
><para
>Modo de janelas de topo do &kdevelop;</para
></caption>
  </mediaobject>
</screenshot>

<para
>Carregue <link linkend="uimodes-survey"
>aqui</link
> para voltar à apresentação dos modos. </para>

</sect1
> <!-- toplevel-desc -->

</appendix
> <!-- app-uimodes-examples -->

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

<appendix id="app-misc-info">
<title
>Mais Informações</title>
<sect1 id="gettinginformation">
<title
>Obter Informações</title>
<para
>(... ainda não escrito ...) </para>
</sect1
> <!-- gettinginformation -->

<sect1 id="app-reporting-bugs">
<title
>Comunicar Erros</title>
<para
>(... ainda não escrito ...) </para>
</sect1
> <!-- app-reporting-bugs -->

<sect1 id="app-licensing">
<title
>Licença</title>
&underFDL; &underGPL; </sect1
> <!-- app-licensing -->
</appendix
> <!-- app-misc-info -->

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

<appendix id="app-changelog">
<title
>Alterações</title>
<sect1 id="changes">
<title
>Alterações a Este Documento</title>
<para>
<itemizedlist>
<listitem
><para
>2003-01-03 &mdash; Início deste ChangeLog </para
></listitem>
</itemizedlist>
</para>
</sect1
> <!-- changes -->
</appendix
> <!-- app-changelog -->

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

<!--  Note (bp, 2003-09-04): <bibliography
> should remain the last appendix section because of a (meinproc???) bug which sends the Next selection in circles back to it. -->

<appendix id="app-bibliography">
<title
>Bibliografia</title>

<para
>(... ainda não escrito ...)</para>

<bibliography>

<biblioentry>
<title
><ulink url="info://make/Top"
>Manual do GNU Make</ulink
></title>
<authorgroup>
<author
><firstname
>Richard M.</firstname
><surname
>Stallman</surname
></author>
<author
><firstname
>Roland</firstname
><surname
>McGrath</surname
></author>
</authorgroup>
</biblioentry>

<biblioentry>
<title
><ulink url="info://automake/Top"
>GNU Automake</ulink
></title>
<authorgroup>
<author
><firstname
>David</firstname
><surname
>MacKenzie</surname
></author>
<author
><firstname
>Tom</firstname
><surname
>Tromey</surname
></author>
</authorgroup>
</biblioentry>

<biblioentry>
<title
><ulink url="info://autoconf/Top"
>GNU Autoconf</ulink
></title>
<authorgroup>
<author
><firstname
>David</firstname
><surname
>MacKenzie</surname
></author>
<author
><firstname
>Ben</firstname
><surname
>Elliston</surname
></author>
</authorgroup>
</biblioentry>

<biblioentry>
<title
><ulink url="info://gcc/Top"
>Utilizar a GNU Compile Collection</ulink
></title>
<author
><firstname
>Richard M.</firstname
><surname
>Stallman</surname
></author>
</biblioentry>

<biblioentry>
<title
><ulink url="info://libtool/Top"
>GNU Libtool</ulink
></title>
<authorgroup>
<author
><firstname
>Gordon</firstname
><surname
>Matzigkeit</surname
></author>
<author
><firstname
>Alexandre</firstname
><surname
>Oliva</surname
></author>
<author
><firstname
>Thomas</firstname
><surname
>Tanner</surname
></author>
<author
><firstname
>Gary V.</firstname
><surname
>Vaughan</surname
></author>
</authorgroup>
</biblioentry>

<biblioentry>
<title
>GNU Autoconf, Automake e Libtool</title>
<edition
>1st edition</edition>
<pubdate
>October 2000</pubdate>
<authorgroup>
<author
><firstname
>Gary V.</firstname
><surname
>Vaughan</surname
></author>
<author
><firstname
>Ben</firstname
><surname
>Elliston</surname
></author>
<author
><firstname
>Tom</firstname
><surname
>Tromey</surname
></author>
<author
><firstname
>Ian Lance</firstname
><surname
>Taylor</surname
></author>
</authorgroup>
<publisher
><publishername
>New Riders Publishing</publishername
></publisher>
<isbn
>ISBN 1578701902</isbn>
</biblioentry>


<biblioentry>
<title
>Programação Avançada no Ambiente do &UNIX;</title>
<edition
>1st edition</edition>
<pubdate
>June 1992</pubdate>
<author
><firstname
>W. Richard</firstname
><surname
>Stevens</surname
></author>
<publisher
><publishername
>Addison-Wesley Pub Co</publishername
></publisher>
<isbn
>ISBN 0201563177</isbn>
</biblioentry>

<biblioentry>
<title
>Thinking in C++, Volume 1: Introduction to Standard C++</title>
<edition
>2nd Edition</edition>
<pubdate
>April 15, 2000</pubdate>
<author
><firstname
>Bruce</firstname
><surname
>Eckel</surname
></author>
<publisher
><publishername
>Prentice Hall</publishername
></publisher>
<isbn
>ISBN 0139798099</isbn>
</biblioentry>

<biblioentry>
<title
>Open Source Development with CVS</title>
<edition
>2nd Edition</edition>
<pubdate
>October 12, 2001</pubdate>
<authorgroup>
<author
><firstname
>Karl</firstname
><surname
>Fogel</surname
></author>
<author
><firstname
>Moshe</firstname
><surname
>Bar</surname
></author>
</authorgroup>
<publisher
><publishername
>The Coriolis Group</publishername
></publisher>
<isbn
>ISBN 158880173X</isbn>
</biblioentry>

<biblioentry>
<title
>Programming PHP</title>
<edition
>1st edition</edition>
<pubdate
>March 2002</pubdate>
<authorgroup>
<author
><firstname
>Rasmus</firstname
><surname
>Lerdorf</surname
></author>
<author
><firstname
>Kevin</firstname
><surname
>Tatroe</surname
></author>
</authorgroup>
<publisher
><publishername
>O'Reilly &amp; Associates</publishername
></publisher>
<isbn
>ISBN 1565926102</isbn>
</biblioentry>

<biblioentry>
<title
>Programming Python</title>
<edition
>2nd Edition</edition>
<pubdate
>March 2001</pubdate>
<author
><firstname
>Mark</firstname
><surname
>Lutz</surname
></author>
<publisher
><publishername
>O'Reilly &amp; Associates</publishername
></publisher>
<isbn
>ISBN 0596000855</isbn>
</biblioentry>

<biblioentry>
<title
>Gui Programming With Python : Using the Qt Toolkit</title>
<edition
>Bk&amp;Cd-r edition</edition>
<pubdate
>January 2002</pubdate>
<author
><firstname
>Boudewijn</firstname
><surname
>Rempt</surname
></author>
<publisher
><publishername
>Opendocs Llc</publishername
></publisher>
<isbn
>ISBN 0970033044</isbn>
</biblioentry>

<biblioentry>
<title
>Programming Perl</title>
<subtitle
>The Camel book</subtitle>
<edition
>3rd Edition</edition>
<pubdate
>July 2000</pubdate>
<authorgroup>
<author
><firstname
>Larry</firstname
><surname
>Wall</surname
></author>
<author
><firstname
>Tom</firstname
><surname
>Christiansen</surname
></author>
<author
><firstname
>Jon</firstname
><surname
>Orwant</surname
></author>
</authorgroup>
<publisher
><publishername
>O'Reilly &amp; Associates</publishername
></publisher>
<isbn
>ISBN 0596000278</isbn>
</biblioentry>

<biblioentry>
<title
>Learning Perl</title>
<subtitle
>The Lama book</subtitle>
<edition
>3rd Edition</edition>
<pubdate
>July 15, 2001</pubdate>
<authorgroup>
<author
><firstname
>Randal L.</firstname
><surname
>Schwartz</surname
></author>
<author
><firstname
>Tom</firstname
><surname
>Phoenix</surname
></author>
</authorgroup>
<publisher
><publishername
>O'Reilly &amp; Associates</publishername
></publisher>
<isbn
>ISBN 0596001320</isbn>
</biblioentry>

</bibliography>
<!-- -->

</appendix
> <!-- app-bibliography -->

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

&documentation.index;

</book>
