<chapter id="applicationwizard">

<chapterinfo>
  <authorgroup>
    <author
><firstname
>Bernd</firstname
><surname
>Pol</surname
></author>
    <!-- ROLES_OF_TRANSLATORS -->
  </authorgroup>
</chapterinfo>

<title
>Introdução &mdash; o &appwizard;</title>

<indexterm zone="applicationwizard">
  <primary
>&appwizard;</primary
></indexterm>

<para
>No &kdevelop;, o trabalho de desenvolvimento de 'software' está organizado em <emphasis
>projectos</emphasis
>. Cada um desses projectos reune tudo o que pertença a uma tarefa de programação completa: ficheiros de código, ficheiros de dados adicionais e todas as necessidades de gestão, como o sistema de compilação, assim como o acesso a todos os componentes e a todas as ferramentas adicionais que sejam necessárias para pôr a aplicação a funcionar. </para>
<para
>A organização de todo o trabalho de desenvolvimento nos projectos permite-lhe mudar facilmente de tarefas para tarefas, a nível global. Isto é bastante útil se você, &eg;, trabalha em várias aplicações ao mesmo tempo, como poderá ser normalmente o caso. Diga ao &kdevelop; para abrir o projecto com que deseja trabalhar e poderá continuar no ambiente tal e qual o deixou. </para>

<sect1 id="new-projects">
<title
>Projectos Novos</title>

<indexterm zone="new-projects">
  <primary
>projecto</primary>
  <secondary
>novos</secondary
></indexterm>

<para
>Sempre que deseje iniciar um novo projecto de programação, terão de ser efectuados vários procedimentos formais de configuração. Terá de ser criada uma estrutura de directorias inicial, os ficheiros de inclusão e de código terão de ser fornecidos, o sistema de compilações tem de ser inicializado, &etc; </para>
<para
>O &kdevelop; fornece uma forma simples de iniciar um novo projecto de programação &mdash; o <emphasis
>&appwizard;</emphasis
>. Você irá encontrar o &appwizard; no item de menu <menuchoice
><guimenu
>Projecto</guimenu
> <guimenuitem
>Novo Projecto</guimenuitem
></menuchoice
>. </para>
<para
>Só é necessária uma série curta de passos para iniciar um novo projecto de programação, usando o &appwizard;: </para>
<orderedlist>
  <listitem
><para
><link linkend="new-projects-start-type"
>Seleccionar a linguagem de programação</link
> que você deseja usar e o tipo da aplicação que deseja compilar, a partir de um conjunto de modelos predefinidos. </para
></listitem>
  <listitem
><para
><link linkend="new-projects-start-general"
>Fornecer algumas informações gerais</link
> como o nome da aplicação, a directoria em que a aplicação deverá ser criada, &etc; </para
></listitem>
  <listitem
><para
>Decidir se deseja usar um <link linkend="new-projects-start-cvs"
>sistema de controlo de versões</link
>, como &eg; o CVS, e fornecer os dados necessários. </para
></listitem>
  <listitem
><para
>Definir alguns modelos para os <link linkend="new-projects-start-templates"
>ficheiros de inclusão e de código iniciais</link
> (se for necessário). </para
></listitem>
  <listitem
><para
>Finalmente, dizer ao &appwizard; para <link linkend="new-projects-start-build"
>configurar todos os artefactos iniciais</link
>, a estrutura de directorias, os modelos de ficheiros de ficheiros de código/inclusão iniciais e as ferramentas de gestão, &eg; um esqueleto inicial de compilação, &etc; </para
></listitem>
</orderedlist>
<para
>'Voil&agrave;' &mdash; é tudo. O &appwizard; irá fornecer-lhe então um conjunto inicial e funcional de ficheiros de programação, nos quais você poderá começar prontamente a trabalhar. </para>
<para
>Vamos então olhar agora para tudo isto com mais detalhe ... </para>

<sect2 id="new-projects-start">
<title
>Passos Iniciais</title>

<indexterm zone="new-projects-start">
  <primary
>janela</primary>
  <secondary
>criar novo projecto</secondary
></indexterm>
<indexterm zone="new-projects-start">
  <primary
>projecto</primary>
  <secondary
>criar novo projecto</secondary>
  <tertiary
>janela</tertiary
></indexterm>
<indexterm zone="new-projects-start">
  <primary
>projecto</primary>
  <secondary
>modelos</secondary
></indexterm>
<indexterm zone="new-projects-start">
  <primary
>modelos</primary>
  <secondary
>projecto</secondary
></indexterm>

<para
>Para criar um novo projecto no &kdevelop;, seleccione <guimenuitem
>Novo Projecto</guimenuitem
> do menu <guimenu
>Projecto</guimenu
>. A janela para <guilabel
>Criar um Novo Projecto</guilabel
> irá aparecer e mostrar-lhe-á uma página <guilabel
>Geral</guilabel
> inicial: </para>

<screenshot id="screenshot-newprojectwizard">
  <mediaobject>
    <imageobject>
      <imagedata fileref="createnewproject.png" format="PNG"/>
    </imageobject>
    <caption
><para
>Janela inicial de configuração de um novo projecto </para
></caption>
  </mediaobject>
</screenshot>

<para
>Como pode ver, esta janela está dividida numa parte superior e numa inferior. Na parte superior, você poderá decidir sobre a linguagem de programação e o tipo de aplicação, enquanto que a parte inferior contém algumas informações gerais. </para>

<sect3 id="new-projects-start-type">
<title
>Seleccionar a Linguagem de Programação e o Tipo de Aplicação</title>

<indexterm zone="new-projects-start-type">
  <primary
>projecto</primary>
  <secondary
>tipo de aplicação</secondary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>projecto</primary>
  <secondary
>linguagem de programação</secondary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>projecto</primary>
  <secondary
>linguagem</secondary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>linguagem</primary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>linguagem de programação</primary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>aplicação</primary>
  <secondary
>tipo</secondary
></indexterm>

<para
>O lado esquerdo da parte superior desta janela é onde você faz o trabalho de selecção. Quando aparecer, você irá encontrar então uma lista de pastas, em que cada uma contém uma linguagem de programação, como por exemplo: </para>

<itemizedlist>
  <listitem
><para
>Ada <indexterm>
      <primary
>Ada</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>C <indexterm>
      <primary
>C</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>C++ <indexterm>
      <primary
>C++</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Bases de Dados (Projectos SQL) <indexterm>
      <primary
>SQL</primary>
      <secondary
>novo projecto</secondary
></indexterm>
    <indexterm>
      <primary
>Base de Dados</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Fortran <indexterm>
      <primary
>Fortran</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Haskell <indexterm>
      <primary
>Haskell</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Java <indexterm>
      <primary
>Java</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>PHP <indexterm>
      <primary
>PHP</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Pascal <indexterm>
      <primary
>Pascal</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Perl <indexterm>
      <primary
>Perl</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Python <indexterm>
      <primary
>Python</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Ruby <indexterm>
      <primary
>Ruby</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Linha de Comandos ('Scripts' para a Linha de Comandos Bash) <indexterm>
      <primary
>Bash</primary>
      <secondary
>novo projecto</secondary
></indexterm>
    <indexterm>
      <primary
>linha de comandos</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
</itemizedlist>

<para
>Para ser mais exacto, estas pastas não contêm ferramentas de programação de facto. Elas sim conduzem a <emphasis
>modelos</emphasis
> predefinidos que você poderá usar como ponto de partida para programar nessa linguagem. Para ter uma ideia do que é fornecido, basta abrir as pastas uma a seguir à outra. Irá aparecer um conjunto de subpastas em algumas e apenas um ou mais itens simples noutras. As subpastas que você verá organizam os modelos disponíveis de acordo com algumas tarefas, enquanto que os itens simples indicam os modelos que você poderá seleccionar. </para>
<para
>Não poderemos entrar em detalhes aqui sobre que tarefas fazem o quê, mas é fácil descobrir. Sempre que você seleccionar um modelo, é mostrada alguma informação nos campos à direita. No campo inferior, você irá encontrar uma <emphasis
>breve descrição</emphasis
> sobre o que é que o modelo é suposto fazer. No campo acima dele é mostrada uma imagem, se estiver disponível, sobre o resultado da aplicação que este modelo produz se você a compilar e correr sem modificações. Normalmente, esta é uma <emphasis
>fotografia</emphasis
> da janela principal que a aplicação irá mostrar. </para>
<para
>Seleccione o modelo que melhor se adequa aos objectivos da sua aplicação como ponto de partida. Depois introduza as informações das propriedades gerais no campo inferior, tal como é mostrado no capítulo seguinte. </para>

<formalpara>
<title
>Seleccionar um Sistema de Gestão de Projectos</title>
<para
>Cada modelo está associado a um <link linkend="makesystems"
>Sistema de Gestão de Projectos</link
> específico. De momento, não existe uma forma livre de seleccionar um desses Sistemas de Gestão de Projectos. Você terá de procurar um modelo que se adeque às suas necessidades ou de alterar o seu projecto, depois de criado, de acordo com isso. </para>
</formalpara>

</sect3
> <!-- new-projects-start-type -->

<sect3 id="new-projects-start-general">
<title
>Fornecer Informação Geral</title>

<indexterm zone="new-projects-start-general">
  <primary
>projecto</primary>
  <secondary
>propriedades</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>propriedades</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>aplicação</primary>
  <secondary
>nome</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>nome</primary>
  <secondary
>aplicação</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projecto</primary>
  <secondary
>directoria</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>directoria</primary>
  <secondary
>projecto</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>localização</primary>
  <secondary
>novo projecto</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projecto</primary>
  <secondary
>autor</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projecto</primary>
  <secondary
>e-mail</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>autor</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>e-mail</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projecto</primary>
  <secondary
>main.cpp</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>main.cpp</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projecto</primary>
  <secondary
>licença</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>licença</primary
></indexterm>

<para
>A parte inferior da janela <guilabel
>Criar um Novo Projecto</guilabel
>, na página <guilabel
>Geral</guilabel
>, é uma área chamada <guilabel
>Propriedades</guilabel
>. Você tem de indicar aqui algumas informações gerais sobre o seu projecto, de modo a que o &appwizard; saiba como criar a estrutura inicial. </para>
<formalpara>
<title
>Nome da Aplicação</title>
<para
>A sua aplicação precisa de um nome, como é óbvio. Indique-o no campo <guilabel
>Propriedades</guilabel
>, chamado <guilabel
>Nome da Aplicação</guilabel
>. Iremos usar <quote
>MinhaAplicacao</quote
> por exemplo. </para>
</formalpara>
<para
>Quando o fizer, você irá reparar que o &appwizard; se recusará a aceitar caracteres especiais de qualquer espécie. Os únicos caracteres aceites são: <itemizedlist>
  <listitem
><para
>caracteres maiúsculos e minúsculos</para
></listitem>
  <listitem
><para
>números</para
></listitem>
  <listitem
><para
>o carácter de sublinhado (_)</para
></listitem>
</itemizedlist>
</para>
<para
>Uma razão importante para esta restrição é que o &appwizard; irá usar este nome da aplicação como <emphasis
>base dos nomes de algumas classes</emphasis
> que irá construir quando configurar o projecto inicialmente. Daí, o nome da aplicação terá de se adequar às regras da linguagem de programação que usar. </para>
<formalpara>
<title
>A Directoria do Projecto</title>
<para
>A outra causa para esta restrição poderá ser vista por si na linha inferior da área <guilabel
>Propriedades</guilabel
>. Chama-se <guilabel
>Localização final</guilabel
> e mostra a directoria onde o &appwizard; irá criar a aplicação. </para>
</formalpara>
<para
>À medida que você vai escrevendo o nome da aplicação, você irá reparar que o &appwizard; repete os seus dados introduzidos no fim da linha <guilabel
>Localização final</guilabel
>, usando apenas os caracteres minúsculos. </para>
<para
>Como tal, você terá de seleccionar o nome da sua nova aplicação com cuidado. Se você terminar com o nome de uma directoria já utilizada, o &appwizard; não lhe permitirá passar para o próximo passo, mantendo o botão <guibutton
>Próximo &gt;</guibutton
> desactivado (a cinzento). De qualquer forma, ele <emphasis
>avisá-lo-á</emphasis
> nesse caso, adicionando o texto <quote
>(dir/ficheiro já existe)</quote
> no campo <guilabel
>Localização final</guilabel
>. </para>

<formalpara>
<title
>A Localização Inicial</title>
<para
>Existem duas formas de seleccionar outra pasta para a sua nova aplicação. Uma passa por seleccionar outro nome. Contudo, isso nem sempre é conveniente (você poderá, &eg;, configurar outra versão de uma aplicação já existente). Como alternativa, você poderá seleccionar outra localização para a pasta da aplicação. </para>
</formalpara>
<para
>Isto é feito com o segundo campo das <guilabel
>Propriedades</guilabel
>, chamado <guilabel
>Localização</guilabel
>. O que você indicar aqui é a <emphasis
>localização inicial</emphasis
> da directoria de desenvolvimento da nova aplicação. O &appwizard; irá adicionar o nome da aplicação a esta directoria quando inicializar o novo projecto. O resultado é apresentado no campo <guilabel
>Localização final</guilabel
>, que lhe dá um melhor controlo sobre o que se passa. </para>
<para
>O &appwizard; irá copiar um <emphasis
>valor inicial</emphasis
> para o campo <guilabel
>Localização</guilabel
> no início. Este é extraído a partir do que você tiver escolhido no campo <guilabel
>Directoria de projectos por omissão</guilabel
> dos <link linkend="setup-general"
>passos gerais de configuração</link
>. No nosso caso, o &kdevelop; está configurado para usar a <filename class="directory"
>/home/ze/projectos</filename
>. </para>
<para
>Altere o conteúdo do campo <guilabel
>Localização</guilabel
> para que a directoria de desenvolvimento das aplicações mostrada na linha <guilabel
>Localização final</guilabel
> seja única. </para>

<note
><para
>Tenha em atenção se a linha do campo <guilabel
>Localização</guilabel
> já existe ou não. O &appwizard; irá <emphasis
>avisá-lo</emphasis
> se indicar localizações inexistentes adicionando <quote
>(inválido)</quote
> ao campo <guilabel
>Localizaço final</guilabel
>. </para
></note>

<formalpara>
<title
>Dados Pessoais</title>
<para
>Os campos a seguir não são tão críticos. Basta indicar o seu nome (i.e., o nome da pessoal responsável pela aplicação) no campo <guilabel
>Autor</guilabel
> e um endereço de e-mail válido no campo <guilabel
>E-mail</guilabel
>, de modo que os utilizadores lhe possam comunicar algo sobre a aplicação. </para>
</formalpara>

<note>
<orderedlist>
  <listitem
><para
>O &appwizard; preenche este campos com alguns valores predefinidos, extraídos a partir da configuração do E-mail no <application
>centro de controlo do KDE</application
>. Se estes valores nos campos da janela <guilabel
>Criar um Novo Projecto</guilabel
>, para o <guilabel
>Autor</guilabel
> e para o <guilabel
>E-mail</guilabel
> não forem válidos, você poderá ter de ver a sua configuração de e-mail no centro de controlo do KDE. </para
></listitem>
  <listitem
><para
>O &appwizard; integrará esta informação nos modelos iniciais de programas, se tal se aplicar. Nos programas em C++ para o KDE, por exemplo, você poderá encontrolá-la perto do início do ficheiro de código <filename
>main.cpp</filename
>. </para
></listitem>
  <listitem
><para
>De todos os campos, o <guilabel
>E-mail</guilabel
> é <emphasis
>opcional</emphasis
>, o que reflecte o facto de que nem todos os programadores terão acesso à Internet. Você poderá manter este campo em branco se o desejar e continuar o seu trabalho. </para
></listitem>
</orderedlist>
</note>

<formalpara>
<title
>Informação da Versão e da Licença</title>
<para
>Finalmente indique um número de versão inicial para a sua aplicação nova no campo <guilabel
>Versão</guilabel
> e seleccione a licença segundo a qual deseja publicar a sua aplicação na página <guilabel
>Licença</guilabel
>. </para>
</formalpara>

<para
>Se você seleccionar um tipo de aplicação para o qual o &appwizard; forneça textos de modelos de código comuns (&eg;, C/C++), você poderá ver o texto de notificação da licença na terceira página desta janela <guilabel
>Criar um Novo Projecto</guilabel
> (veja o capítulo sobre como <link linkend="new-projects-start-templates"
>Fornecer modelos de código/inclusão</link
> em baixo). </para>
<para
>Se você indicou <quote
>Personalizada</quote
> na página <guilabel
>Licença</guilabel
>, você terá de indicar um texto próprio para a licença. </para>

<note
><para
>Tanto a informação da licença como da versão serão integradas nos modelos iniciais num formato adequado que o tipo de aplicação que você seleccionou ofereça. </para
></note>

<para
>Logo que tenha introduzido toda esta informação, carregue no botão <guibutton
>Próximo &gt;</guibutton
> para avançar, tal como é mostrado nos capítulos seguintes. </para>
</sect3
> <!-- new-projects-start-general -->

</sect2
> <!-- new-projects-start -->

<sect2 id="new-projects-start-cvs">
<title
>Fornecer a Informação do Sistema de Controlo de Versões</title>

<indexterm zone="new-projects-start-cvs">
  <primary
>CVS</primary>
  <secondary
>novo projecto</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>projecto</primary>
  <secondary
>CVS</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>base de dados</primary>
  <secondary
>CVS</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>versão</primary>
  <secondary
>base de dados</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>versão</primary>
  <secondary
>CVS</secondary
></indexterm>

<para
>Num segundo passo, o &appwizard; levá-lo-á para a página do <guilabel
>Sistema de Controlo de Versões</guilabel
>, onde poderá decidir qual o sistema de controlo de versões que desejará usar. </para>

<note
><para
>Esta discussão concentra-se nas necessidades apenas para a criação do projecto. Para mais informações sobre o CVS veja o capítulo sobre como <link linkend="cvs"
>Usar o CVS</link
> em baixo. </para
></note>

<formalpara>
<title
>Nenhum Sistema de Controlo de Versões Necessário</title>
<para
>Inicialmente, está a opção <quote
>Nenhum</quote
> seleccionada na página do <guilabel
>Sistema de controlo de versões</guilabel
>, onde a página ficará em branco. Se não quiser usar nenhum sistema de controlo de versões, basta carregar no botão <guibutton
>Próximo 
></guibutton
> e seguir em frente. </para>
</formalpara>

<formalpara>
<title
>Usar o CVS</title>
<para
>Caso contrário, você terá de seleccionar de novo o sistema de controlo de versões que deseja usar na página <guilabel
>Sistema de controlo de versões</guilabel
>. De momento, só o <quote
>&cvs;</quote
> é que está disponível. Se o seleccionar, então o &appwizard; irá mostrar de novo a página, mostrando ela agora um conjunto de campos que precisa de preencher. </para>
</formalpara>

<screenshot id="screenshot-newproject-cvs">
  <mediaobject>
    <imageobject>
      <imagedata fileref="create-new-project-cvs.png" format="PNG"/>
    </imageobject>
    <caption
><para
>Configurar o novo projecto no CVS </para
></caption>
  </mediaobject>
</screenshot>

<para
>Um sistema de controlo de versões como o &CVS; (que significa <quote
>Concurrent Versions System</quote
> ou <quote
>Sistema Concorrente de Versões</quote
>) guarda as cópias dos ficheiros seleccionados do projecto numa espécie de base de dados. Se você usar o &CVS; você poderá, entre outras coisas, enviar (fazer <quote
>commit</quote
>) destes ficheiros ou carregá-los para a sua directoria do projecto (fazer um <quote
>checkout</quote
> ou um <quote
>update</quote
>). O que há de especial nisto é que os ficheiros na base de dados das versões são gravados de uma forma estruturada que permite em qualquer altura voltar atrás a um estado anterior de desenvolvimento, se for necessário. Para além disso, o &CVS; permite a vários programadores colaborarem facilmente num grande projecto (como o &kdevelop;) sem estragar o trabalho dos outros. </para>

<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>raiz</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>raiz</primary>
  <secondary
>CVS</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>local</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>remoto</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS local</primary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>:local:</primary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>:local:</secondary
></indexterm>

<formalpara id="new-projects-start-cvs-root">
<title
>Raiz do CVS</title>
<para
>O &cvs; precisa de <emphasis
>gerir</emphasis
> a base de dados de versões que mantém para os seus ficheiros do projecto. Para o conseguir, ele mantém alguma informação especial da base de dados numa directoria própria, chamada de <emphasis
>raiz do &cvs;</emphasis
>. O primeiro passo para configurar o &cvs; para o seu projecto novo é então indicar ao &kdevelop; onde é que se localiza essa raiz. </para>
</formalpara>

<para
><emphasis
>Raiz local do &cvs;.</emphasis
> Existem duas possibilidades básicas. Ou você usa uma base de dados <emphasis
>local</emphasis
> do CVS ou poderá usar uma base de dados que é mantida num <emphasis
>servidor remoto</emphasis
>. Se fizer desenvolvimentos próprios, você poderá usar a base de dados do &cvs; como uma espécie de base de dados de salvaguarda no seu próprio computador. Normalmente esta é configurada na raiz da sua área pessoal e é-lhe dado o nome <filename
>cvsroot</filename
>. Isto poderá assemelhar-se ao seguinte: </para>
<para
><userinput
><filename class="directory"
>/home/ze/cvsroot</filename
></userinput
> (em que <filename
>ze</filename
> poderá ser substituído pelo nome do seu utilizador). </para>

<note
><para
>De facto, este é um formato curto. De forma exacta, a raiz local do &cvs; deverá ser endereçada com o prefixo <computeroutput
>:local:</computeroutput
>. O formato curto só é permitido nos casos em que o nome do ficheiro começa por uma barra (<computeroutput
>/</computeroutput
>). O nome completo do nosso exemplo seria então igual a <filename class="directory"
>:local:/home/ze/cvsroot</filename
> </para
></note>

<para
>Indique o nome da directoria-raiz do &cvs; que foi configurada para o seu sistema no campo <guilabel
>Raiz do CVS</guilabel
>. Em princípio, você poderá seleccionar qualquer nome, ou até mesmo usar várias bases de dados do &cvs;, mas aconselha-se que você se associe à raiz do &cvs; logo que esteja configurada. </para>
<para
><emphasis
>Inicializar uma nova raiz do &cvs;.</emphasis
> Se não existir ainda nenhuma raiz do &cvs;, o &kdevelop; poderá dizer ao sistema do &CVS; para criar uma para si na directoria indicada. Basta assinalar a opção <guilabel
>Iniciar raiz</guilabel
> por baixo do campo <guilabel
>Raiz do CVS</guilabel
>. </para>
<note
><para
>Como foi dito, o &kdevelop; só <emphasis
>manda</emphasis
> o sistema do &CVS; inicializar uma nova raiz do &cvs;. Não faz nada, por si só, a esta directoria. Felizmente, o &cvs; é esperto o suficiente para verificar se a directoria de raiz do &cvs; já existe ou não. Como tal, não fará mal nenhum se você tiver assinalado inadvertidamente a opção <guilabel
>Iniciar raiz</guilabel
> numa directoria de raiz do &cvs; já existente. </para
></note>

<para
><emphasis
>Raiz do &cvs; remota.</emphasis
> Existem ocasiões em que a base de dados do &cvs; deverá ser mantida num servidor remoto, especialmente quando vários programadores trabalharem no mesmo projecto. Aí, você terá de indicar o URL da raiz do &cvs; deste servidor no campo <guilabel
>Raiz do CVS</guilabel
>. Por exemplo, se você quiser aceder ao servidor de &cvs; do &kde;: </para>
<para
><userinput
><filename class="directory"
>:pserver:utilizador@cvs.kde.org:/home/kde</filename
></userinput
> (onde o <filename
>utilizador</filename
> corresponde ao nome do utilizador definido para a sua conta de &cvs; do &kde;) </para>

<indexterm zone="new-projects-start-cvs-remote">
  <primary
>CVS remoto</primary
></indexterm>
<indexterm zone="new-projects-start-cvs-remote">
  <primary
>:pserver:</primary
></indexterm>
<indexterm zone="new-projects-start-cvs-remote">
  <primary
>:ext:</primary
></indexterm>
<indexterm zone="new-projects-start-cvs-remote">
  <primary
>CVS</primary>
  <secondary
>:local:</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-remote">
  <primary
>CVS</primary>
  <secondary
>:pserver:</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-remote">
  <primary
>CVS</primary>
  <secondary
>:ext:</secondary
></indexterm>

<formalpara id="new-projects-start-cvs-remote">
<title
>Tipos de Servidores de &cvs; Remotos</title>
<para
>Basicamente existem dois tipos de servidores de &cvs; remotos largamente usados, o <emphasis
>pserver</emphasis
> que usa um protocolo não-cifrado e protegido por senha, ou o <emphasis
>ext</emphasis
> que uma transferência de dados cifrada por RSH ou SSH. Eles são distinguidos de acordo com o prefixo do URL que usam: </para>
</formalpara>
<para>
<filename
>:pserver:</filename>
</para>
<para
>para o tipo de servidor não-cifrado e <quote
>protegido por senha</quote
>, ou </para>
<para>
<filename
>:ext:</filename>
</para>
<para
>para um tipo de servidor cifrado por RSH ou SSH. Por exemplo, o </para>
<para>
<userinput
><filename class="directory"
>:ext:utilizador@cvs.cervisia.sourceforge.net:/cvsroot/cervisia</filename
></userinput>
</para>
<para
>acede à raiz do &cvs; da conhecida aplicação <application
>Cervisia</application
>, que é usada para gerir o &cvs; e que está no servidor do SourceForge. </para>
<para
>Se você quiser usar um servidor cifrado por RSH ou por SSH para o acesso ao &cvs;, você terá de dizer ao &kdevelop;, qual o protocolo de cifra a usar. Basta indicar <userinput
>rsh</userinput
> ou <userinput
>ssh</userinput
> no campo <guilabel
>CVS_RSH</guilabel
> da página <guilabel
>Criar um Novo Projecto</guilabel
> <guilabel
>Sistema de Controlo de Versões</guilabel
>. </para>

<note
><para
>Existe uma contrapartida se você usar um servidor cifrado para o &cvs; no &kdevelop;. Veja o capítulo <link linkend="cvs"
>Usar o CVS</link
> para mais detalhes. </para
></note>

<indexterm zone="new-projects-start-cvs-repository">
  <primary
>CVS</primary>
  <secondary
>repositório</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-repository">
  <primary
>repositório</primary>
  <secondary
>CVS</secondary
></indexterm>

<formalpara id="new-projects-start-cvs-repository">
<title
>O Repositório de &cvs;</title>
<para
>Até agora você só indicou ao &kdevelop; onde é que a raiz do &cvs; root se encontra para gerir a base de dados das versões e como aceder-lhe. Agora, você irá precisar de dizer ao &kdevelop; sob que nome você irá querer que o &CVS; grave os seus ficheiros do projecto nessa base de dados. O local onde os seus ficheiros do projecto serão guardados no &cvs; é chamado de <emphasis
>repositório</emphasis
>. </para>
</formalpara>
<para
>Em princípio, você poderá usar qualquer nome para o repositório de &cvs; dos ficheiros do seu projecto, desde que corresponda às especificações de nomes de ficheiros. Mesmo assim, a maioria dos programadores usam apenas o nome da aplicação em si. O &CVS; irá criar uma directoria com esse nome na raiz do &cvs;, para que seja encontrada com maior facilidade se você mantiver o nome da aplicação nela. </para>
<para
>Basta indica o nome do repositório que deseja usar no campo <guilabel
>Repositório do CVS</guilabel
> da página <guilabel
>Criar um Novo Projecto</guilabel
> <guilabel
>Sistema de Controlo de Versões</guilabel
>. No nosso exemplo, esta é: <userinput
>NovaAplicacao</userinput
> </para>

<warning
><para
><emphasis
>Tenha cuidado em não usar um repositório que já exista!</emphasis
> O sistema &CVS; não o avisa sobre os ficheiros duplicados mas irá limpar tudo o que não conduza a um conflito formal. Em resumo, você poderá deixar tudo confuso! </para
></warning>

<formalpara>
<title
>Os Campos Restantes</title>
<para
>Não existe já muito mais para fazer. O &appwizard; já configurou os campos restante por si. Em detalhe: </para>
</formalpara>
<para
>O campo do <guilabel
>Vendedor</guilabel
> é usado apenas por razões de compatibilidae. Você poderá usar o valor por omissão <quote
>distribuidor</quote
> que o &appwizard; usa. </para>
<para
>O campo da <guilabel
>Mensagem</guilabel
> permite-lhe comentar o conteúdo inicial do &cvs;. Use o texto que desejar ou poderá manter o texto <quote
>novo projecto</quote
> que o &appwizard; colocou. </para>
<para
>O campo <guilabel
>Marca de lançamento</guilabel
> contém o nome que é marcado para o estado inicial do seu projecto. Essa <emphasis
>marca</emphasis
> define um certo ponto no repositório do &CVS; a que você poderá aceder posteriormente para este estado do seu desenvolvimento. (Veja mais no capítulo <link linkend="cvs"
>Usar o CVS</link
>.) </para>
<para
>O &appwizard; colocou uma marca <quote
>inicio</quote
>, a qual é uma proposta aceitável. Basta usá-la. </para>

<note>
<para
>Quando qualquer uma destas informações está errada, o &kdevelop; normalmente não irá saber de nada até à altura da criação do projecto. É o sistema do &CVS; que irá descobrir esses erros ao tentar criar o repositório. Aqui você deverá dar uma vista de olhos na janela <guilabel
>Mensagens</guilabel
> do &kdevelop; logo que o projecto for criado no passo final da configuração. Se ocorreu algum erro com o &CVS;, você irá ver na maioria dos casos uma mensagem semelhante a esta: </para>

<screen
><computeroutput
><literal>
* cd '/home/ze/teste' &amp;&amp; cvs -d '/home/ze/raiz_cvs' \
  import -m 'novo projecto' '' 'distribuidor' 'inicio' &amp;&amp;\
  sh /opt/kde3/share/apps/kdevcvs/buildcvs.sh . '' \
  '/home/ze/raiz_cvs'
* cvs [import aborted]: /home/ze/raiz_cvs/CVSROOT: No such file or
  directory
* *** Exited with status: 1 ***
</literal
></computeroutput
></screen>

<para
>Se isto acontecer, você terá de configurar manualmente o &cvs; (o &kdevelop; deverá ter conseguido inicializar com sucesso os ficheiros do seu projecto nesta altura) ou então remover a directoria do projecto e começar tudo de novo com a opção <guimenuitem
>Novo Projecto</guimenuitem
> do menu <guimenu
>Projecto</guimenu
>. </para>
</note>

<para
>Depois de você ter introduzido toda a configuração relacionada com o &CVS;, carregue no botão <guibutton
>Próximo &gt;</guibutton
> para prosseguir. </para>

<note
><para
>Se você quiser corrigir um erro na página anterior do <guilabel
>Criar um Novo Projecto</guilabel
>, basta carregar no botão <guibutton
>&lt; Anterior</guibutton
>. O &appwizard; irá recordar os seus resultados na página actual, por isso você poderá prosseguir com facilidade quando regressar. </para
></note>

</sect2
> <!-- new-projects-start-cvs -->

<sect2 id="new-projects-start-templates">
<title
>Fornecer os Modelos de Ficheiros de Código/Inclusão</title>

<para
>O próximo passo leva-o a uma série de páginas onde poderá configurar informações comuns que deseje incluir nos seus ficheiros de código e de inclusão, se a tarefa à mão o permitir. </para>
<para
>Tanto os modelos para ficheiros de código e de inclusão são fornecidos para as aplicações de C e C++, cada um na sua própria página. Para as outras linguagens, só deverão existir modelos de ficheiros de código. E ainda, noutros casos, você poderá encontrar esta página de modelos em branco. </para>
<para
>Se a página for usada, o &appwizard; irá preencher um dado comentário comum sobre o que uma aplicação em C++ poderá parecer (o texto está em inglês, dado ser uma transcrição da licença GPL): </para>

<screen
><computeroutput
><literal>
/***************************************************************************
 *   Copyright (C) 2003 by O Seu Nome                                      *
 *   voce@proprio.com                                                      *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/
</literal
></computeroutput
></screen>

<para
>Outros modelos irão fornecer várias informações semelhantes num formato que esteja de acordo com as definições da linguagem de programação que deseja usar. </para>
<para
>Como você poderá já ter notado, o gestor de aplicações já preencheu alguma informação que você indicou na primeira página <guilabel
>Geral</guilabel
> da janela <guilabel
>Criar um Novo Projecto</guilabel
>, nomeadamente o conteúdo dos campos <guilabel
>Autor</guilabel
> e <guilabel
>E-mail</guilabel
>. Também a informação adequada da licença foi introduzida de acordo com a sua selecção na página <guilabel
>Licença</guilabel
>. </para>

<sect3 id="new-projects-start-templates-edit">
<title
>Como Editar os Modelos</title>

<indexterm zone="new-projects-start-templates-edit">
  <primary
>modelos</primary>
  <secondary
>projecto</secondary>
  <tertiary
>editar</tertiary
></indexterm>
<indexterm zone="new-projects-start-templates-edit">
  <primary
>projecto</primary>
  <secondary
>modelos</secondary>
  <tertiary
>editar</tertiary
></indexterm>

<para
>Os modelos que você configurar na janela <guilabel
>Criar um Novo Projecto</guilabel
> serão depois processados, sempre que você disser ao &kdevelop; para configurar um novo ficheiro de código e/ou de inclusão. A informação que indicar aqui será incluída no topo, como um cabeçalho de docummentação, antes de a parte do código começar. </para>
<para
>Você não está restrito ao texto normal, de qualquer forma. O &kdevelop; reconhece diversas variáveis que lhe permitirão incluir a informação actualizada no ficheiro. O &appwizard; usou de facto algumas variáveis para inserir o <guilabel
>Autor</guilabel
>, o <guilabel
>E-mail</guilabel
> e a <guilabel
>Licença</guilabel
> no campo de texto do modelo inicial. </para>

<formalpara>
<title
>Incluir a Informação do Ficheiro para o &doxygen;</title>
<para
>Se, por exemplo, você quiser que a documentação da API gerada pelo &doxygen; mostre alguma informação sobre o conteúdo do ficheiro na sua lista de ficheiros, você poderá incluir as seguintes linhas no modelo do ficheiro de código: </para>
</formalpara
><screen
><computeroutput
><literal>
/**
 * \file $MODULE$.cpp
 * \brief (ponha uma descrição breve aqui).
 **/
</literal
></computeroutput
></screen>
<para
>Sempre que você criar um novo ficheiro de código, o &kdevelop; irá substituir a variável <computeroutput
>$MODULE$</computeroutput
> pelo nome do ficheiro criado como novo. Por exemplo, se você criou uma nova classe de C++ chamada <classname
>TesteSimples</classname
>, você irá ver as seguintes linhas no ficheiro <filename
>testesimples.cpp</filename
>: </para>
<screen
><computeroutput
><literal>
/**
 * \file testesimples.cpp
 * \brief (ponha uma descrição breve aqui).
 **/
</literal
></computeroutput
></screen>
<para
>Você terá à mesma de fornecer a breve descrição a seguir à palavra-chave <quote
>\brief</quote
>, mas parte do trabalho é automaticamente feita para si. </para>
<formalpara>
<title
>O Ficheiro de Texto da Licença</title>
<para
>Como outro exemplo, você poderia incluir uma referência explícita para o texto da licença que deseja usar no modelo. Use a variável <computeroutput
>$LICENSEFILE$</computeroutput
> para esse fim e adicione, por exemplo, esta linha: </para>
</formalpara>
<screen
><computeroutput
><literal>
//   Veja o $LICENSEFILE$ para o texto completo da licença.
</literal
></computeroutput
></screen>
<para
>O &appwizard; irá substituir o <computeroutput
>$LICENSEFILE$</computeroutput
> pela localização do ficheiro com o texto completo da licença, nomeadamente: </para>
<screen
><computeroutput
><literal>
//   Veja o COPYING para o texto completo da licença.
</literal
></computeroutput
></screen>
<para
>para a licença GPL ou </para>
<screen
><computeroutput
><literal>
//   Veja o LICENSE.BSD para o texto completo da licença.
</literal
></computeroutput
></screen>
<para
>se optou por colocar a sua aplicação segundo os termos da licença BSD. </para>
<para
>Existem obviamente mais variáveis que o &kdevelop; conhece. Veja a secção sobre como <link linkend="newfiles-edittemplates"
>Editar os modelos</link
> no capítulo <link linkend="editing"
>Ferramentas de edição</link
> para saber o que é possível. </para>

<note
><para
>Os modelos que definir aqui ficarão em efeito só após o &appwizard; ter criado o projecto novo. Você irá encontrar esta informação no topo dos ficheiros que você criou durante o processo de desenvolvimento. Ao criar os ficheiros iniciais, o &appwizard; irá usar alguns modelos-padrão predefinidos. Você terá de adaptar manualmente estes ficheiros iniciais de acordo com as suas necessidades. </para
></note>

</sect3
> <!-- new-projects-start-templates-edit -->
</sect2
> <!-- new-projects-start-templates -->

<sect2 id="new-projects-start-build">
<title
>Criar os Ficheiros Iniciais do Projecto</title>

<indexterm zone="new-projects-start-build">
  <primary
>projecto</primary>
  <secondary
>novos</secondary>
  <tertiary
>criar</tertiary
></indexterm>
<indexterm zone="new-projects-start-build">
  <primary
>projecto</primary>
  <secondary
>criação inicial</secondary
></indexterm>

<para
>Está quase tudo feito, por agora. Na última página de modelos, o botão <guibutton
>Próximo &gt;</guibutton
> terá mudado para aparecer então <guibutton
>Terminar</guibutton
>. </para>
<para
><emphasis
>Pense duas vezes antes de carregar nele!</emphasis
> Você terá à mesma a opção de rever tudo se carregar repetidamente no botão <guibutton
>&lt; Anterior</guibutton
>. Dado que o &appwizard; recorda todas as informações que você introduziu até agora, é aconselhável que você ocupe algum tempo a rever tudo de novo. No caso de você usar o CVS local, não se esqueça de verificar com atenção o nome do <emphasis
>repositório de CVS</emphasis
> (não deverá existir nenhuma subdirectoria com esse nome na directoria da raiz do CVS &mdash; se existir, tente outro nome de repositório). </para>
<para
>Se em alguma altura não desejar que o novo projecto, seja criado, interrompa a janela do <guilabel
>Criar um Novo Projecto</guilabel
> com o botão <guibutton
>Cancelar</guibutton
>. Caso contrário, carregue em <guibutton
>Terminar</guibutton
> e veja na janela <guilabel
>Mensagens</guilabel
> como é que o &appwizard; inicia o projecto. </para>
<para
>Se você quiser usar um sistema de controlo de versões (&CVS;), irão existir dois passos, de facto. O &appwizard; irá primeiro criar as directorias e ficheiros do projecto e então depois invocará o programa &CVS; que irá reiniciar a janela de <guilabel
>Mensagens</guilabel
> com o seu próprio conteúdo. Se ocorrer algum erro durante uma dessas execuções, o processo irá terminar, mostrando-lhe uma mensagem de erro correspondente na janela. </para>

<note
><para
>Em muitos casos em que o seu projecto foi configurado desta forma, o &kdevelop; irá automaticamente carregar os ficheiros de código de um ou mais módulos importantes para que você possa começar logo a trabalhar. (Os módulos de código que serão mostrados&mdash;se existir algum que seja&mdash;contudo, depende do modelo seleccionado inicialmente no &appwizard;.) </para
></note>

<para
>Não se esqueça de verificar inicialmente o que é que o &appwizard; forneceu. Por exemplo, você poderá querer alterar as informações iniciais dos cabeçalhos, de acordo com os seus próprios modelos. Normalmente, você irá encontrar estes numa subdirectoria <filename class="directory"
>templates</filename
> da directoria do seu projecto. À partida, somente algumas cópias simples serão suficientes. </para>
<para
>Aí, é aconselhável que você <emphasis
>compile o projecto inicial</emphasis
> antes de tentar alterar qualquer código que seja. Na maioria dos casos, esta compilação inicial será possível à partida. Como tal, você poderá começar logo a preparar o projecto para ser alterado de acordo com a sua vontade. Se não foi possível, basta remover a directoria do projecto (e da sua raiz local do &CVS; se usar alguma) e recomeçar do princípio. </para>

<warning id="defaultbuild-warning"
> <!-- ### remove this when "default" works again -->

  <indexterm zone="defaultbuild-warning">
    <primary
>configuração predefinida da criação</primary>
    <secondary
>aviso</secondary
></indexterm>
  <indexterm zone="defaultbuild-warning">
    <primary
>configurações da criação</primary>
    <secondary
>aviso da criação predefinida</secondary
></indexterm>
  <indexterm zone="defaultbuild-warning">
    <primary
>aviso</primary>
    <secondary
>configuração predefinida da criação</secondary
></indexterm>

  <para
>Antes de você compilar o seu novo projecto da primeira vez, dê uma vista de olhos no <menuchoice
><guimenu
>Projecto</guimenu
> <guimenuitem
>Configuração da Construção</guimenuitem
></menuchoice
>. Devem existir três selecções mostradas: <guimenuitem
>default</guimenuitem
>, <guimenuitem
>optimized</guimenuitem
> e <guimenuitem
>debug</guimenuitem
>, com a <guimenuitem
>debug</guimenuitem
> seleccionada; use se possível esta, ou então use a <guimenuitem
>optimized</guimenuitem
> em alternativa. </para>
  <para
>Devido a algumas limitações na configuração actual do autoconf/automake, você <emphasis
>não deverá de forma alguma</emphasis
> compilar com a configuração <guimenuitem
>default</guimenuitem
>. Esta irá corromper algumas configurações de directorias internas, fazendo com que o <command
>configure</command
> se queixe quando o tentar usar nas configurações <guimenuitem
>optimized</guimenuitem
> ou <guimenuitem
>debug</guimenuitem
>, a seguir. </para>
  <para
>(Isto aplica-se apenas às capacidades com várias opções. Se o tipo de aplicação que você seleccionou só contém uma configuração <guimenuitem
>default</guimenuitem
>, você deverá obviamente usar esta.) </para>
</warning>

</sect2
> <!-- new-projects-start-build -->

</sect1
> <!-- new-projects -->

</chapter
> <!-- applicationwizard -->
