<chapter id="applicationwizard">

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

<title>Primeros pasos &mdash; el &appwizard;</title>
<!-- FIXME (bp, 2006-06-18) This is a misnomer. It should be something like -->
<!-- Working With Projects -->
<!-- featuring the application manager as part of the New Projects section. -->

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

<para>En &tdevelop; el trabajo de desarrollo de software se organiza en <emphasis>proyectos</emphasis>. Estos proyectos guardan junto todo lo que pertenece a una completa tarea de programación: archivos de código fuente, archivos de datos adicionales, cualquier utilidad de gestión realmente necesaria (como el sistema de construcción), así como el acceso a todos los componentes y cualquier herramienta adicional necesaria para generar la aplicación y para ejecutarla. </para>
<para>La organización de todas las tareas de desarrollo en proyectos le permite cambiar fácilmente entre diferentes tareas globales. Esto es bastante útil si, &eg;, trabaja en varias aplicaciones al mismo tiempo, como suele suceder a menudo. Dígale a &tdevelop; que abra el proyecto en el que quiere trabajar y podrá continuar en su entorno tal y como lo había dejado la última vez. </para>

<sect1 id="new-projects">
<title>Nuevos proyectos</title>

<!-- TODO (bp, 2006-06-18) This whole section must be completely rewritten. -->
<!-- There is no need for a tutorial habit anymore. -->

<indexterm zone="new-projects">
  <primary>proyecto</primary>
  <secondary>nuevo</secondary></indexterm>

<para>Cada vez que desee iniciar un nuevo proyecto de programación necesitará realizar bastantes procesos de configuración. Deberá establecer una estructura de carpetas inicial, proporcionar archivos de cabecera y de código fuente iniciales, inicializar el sistema de construcción, &etc; </para>
<para>&tdevelop; le proporciona un modo fácil de iniciar un nuevo proyecto de programación: el <emphasis>&appwizard;</emphasis>. Encontrará el &appwizard; en la opción del menú <menuchoice><guimenu>Proyecto</guimenu> <guimenuitem>Nuevo proyecto</guimenuitem></menuchoice>. </para>
<para>Si usa el &appwizard;, solo necesitará realizar una corta serie de pasos para comenzar un nuevo proyecto de programación: </para>
<orderedlist>
  <listitem><para><link linkend="new-projects-start-type">Seleccionar el lenguaje de programación</link> que desea usar y el tipo de aplicación que desea generar a partir de un juego de plantillas predefinidas. </para></listitem>
  <listitem><para><link linkend="new-projects-start-general">Proporcionar alguna información general</link> como el nombre de la aplicación, la carpeta donde deberá ser generada, &etc; </para></listitem>
  <listitem><para>Decidir si desea utilizar un <link linkend="new-projects-start-cvs">sistema de control de versiones</link>, como &eg; CVS, y proporcionar los datos que fueran necesarios. </para></listitem>
  <listitem><para>Configurar algunas plantillas para <link linkend="new-projects-start-templates">los archivos iniciales de cabecera y de código fuente</link> (si es necesario). </para></listitem>
  <listitem><para>Finalmente, dígale al &appwizard; que <link linkend="new-projects-start-build">genere todo lo necesario</link>, la estructura de carpetas, las plantillas iniciales para archivos de cabecera y código fuente, los archivos de las herramientas de gestión (como, &eg;, un esqueleto make inicial), &etc; </para></listitem>
</orderedlist>
<para>¡Y ya está! Eso es todo. &appwizard; le proporcionará un juego de archivos de programación con funcionalidades primarias con los que podrá comenzar a trabajar inmediatamente. </para>
<para>Veamos ahora todo esto más detalladamente... </para>

<sect2 id="new-projects-start">
<title>Pasos iniciales</title>

<indexterm zone="new-projects-start">
  <primary>diálogo</primary>
  <secondary>crear nuevo proyecto</secondary></indexterm>
<indexterm zone="new-projects-start">
  <primary>proyecto</primary>
  <secondary>crear nuevo proyecto</secondary>
  <tertiary>diálogo</tertiary></indexterm>
<indexterm zone="new-projects-start">
  <primary>proyecto</primary>
  <secondary>plantillas</secondary></indexterm>
<indexterm zone="new-projects-start">
  <primary>plantillas</primary>
  <secondary>proyecto</secondary></indexterm>

<para>Para crear un nuevo proyecto en &tdevelop;, seleccione <guimenuitem>Nuevo proyecto</guimenuitem> en el menú <guimenu>Proyecto</guimenu>. El diálogo <guilabel>Crear nuevo proyecto</guilabel> se mostrará con una página <guilabel>General</guilabel> inicial: </para>

<screenshot id="screenshot-newprojectwizard">
  <mediaobject>
    <imageobject>
      <imagedata fileref="create-new-project.png" format="PNG"/>
    </imageobject>
    <caption><para>Diálogo inicial para configurar un nuevo proyecto </para></caption>
  </mediaobject>
</screenshot>

<para>Como puede ver, este diálogo está dividido en dos partes: en la superior puede decidir el lenguaje de programación y el tipo de aplicación; la parte inferior guarda alguna información general. </para>

<sect3 id="new-projects-start-type">
<title>Selección del lenguaje de programación y tipo de aplicación</title>

<indexterm zone="new-projects-start-type">
  <primary>proyecto</primary>
  <secondary>tipo de aplicación</secondary></indexterm>
<indexterm zone="new-projects-start-type">
  <primary>proyecto</primary>
  <secondary>lenguaje de programación</secondary></indexterm>
<indexterm zone="new-projects-start-type">
  <primary>proyecto</primary>
  <secondary>lenguaje</secondary></indexterm>
<indexterm zone="new-projects-start-type">
  <primary>lenguaje</primary></indexterm>
<indexterm zone="new-projects-start-type">
  <primary>lenguaje de programación</primary></indexterm>
<indexterm zone="new-projects-start-type">
  <primary>aplicación</primary>
  <secondary>tipo</secondary></indexterm>

<para>En el lado izquierdo de la parte superior de este diálogo podrá realizar la selección de su trabajo. En él encontrará una lista de carpetas, cada una etiquetada con el nombre de un lenguaje de programación, como estos: </para>

<itemizedlist>
  <listitem><para>Ada <indexterm>
      <primary>Ada</primary>
      <secondary>nuevo proyecto</secondary></indexterm>
  </para></listitem>
  <listitem><para>C <indexterm>
      <primary>C</primary>
      <secondary>nuevo proyecto</secondary></indexterm>
  </para></listitem>
  <listitem><para>C++ <indexterm>
      <primary>C++</primary>
      <secondary>nuevo proyecto</secondary></indexterm>
  </para></listitem>
  <listitem><para>Base de datos (proyectos SQL) <indexterm>
      <primary>SQL</primary>
      <secondary>nuevo proyecto</secondary></indexterm>
    <indexterm>
      <primary>Base de datos</primary>
      <secondary>nuevo proyecto</secondary></indexterm>
  </para></listitem>
  <listitem><para>Fortran <indexterm>
      <primary>Fortran</primary>
      <secondary>nuevo proyecto</secondary></indexterm>
  </para></listitem>
  <listitem><para>Haskell <indexterm>
      <primary>Haskell</primary>
      <secondary>nuevo proyecto</secondary></indexterm>
  </para></listitem>
  <listitem><para>Java <indexterm>
      <primary>Java</primary>
      <secondary>nuevo proyecto</secondary></indexterm>
  </para></listitem>
  <listitem><para>PHP <indexterm>
      <primary>PHP</primary>
      <secondary>nuevo proyecto</secondary></indexterm>
  </para></listitem>
  <listitem><para>Pascal <indexterm>
      <primary>Pascal</primary>
      <secondary>nuevo proyecto</secondary></indexterm>
  </para></listitem>
  <listitem><para>Perl <indexterm>
      <primary>Perl</primary>
      <secondary>nuevo proyecto</secondary></indexterm>
  </para></listitem>
  <listitem><para>Python <indexterm>
      <primary>Python</primary>
      <secondary>nuevo proyecto</secondary></indexterm>
  </para></listitem>
  <listitem><para>Ruby <indexterm>
      <primary>Ruby</primary>
      <secondary>nuevo proyecto</secondary></indexterm>
  </para></listitem>
  <listitem><para>Shell (guiones para el intérprete Bash) <indexterm>
      <primary>Bash</primary>
      <secondary>nuevo proyecto</secondary></indexterm>
    <indexterm>
      <primary>shell</primary>
      <secondary>nuevo proyecto</secondary></indexterm>
  </para></listitem>
</itemizedlist>

<para>Para ser precisos, estas carpetas no contienen realmente herramientas de programación, sino que conducen a <emphasis>plantillas</emphasis> predefinidas que puede utilizar como punto de partida para desarrollos en dichos lenguajes. Para hacerse una idea de lo que se le proporciona, abra las diferentes carpetas. Encontrará varias subcarpetas en algunas de ellas, mientras que en otras solo habrá una o más entradas simples. Estas subcarpetas sirven para organizar las plantillas disponibles según algunas tareas; las entradas simples se refieren a las plantillas que puede seleccionar. </para>
<para>No podemos entrar aquí en detalles sobre qué tarea proporciona cada plantilla, pero es fácil hacerse una idea. Cada vez que seleccione una entrada de plantilla se mostrará distinta información en los campos de la derecha. En el campo inferior encontrará una <emphasis>corta descripción</emphasis> de lo que se supone que hace la plantilla. En el campo inmediatamente superior se mostrará una imagen (si está disponible) sobre el aspecto de la aplicación que producirá dicha plantilla si la compila y ejecuta sin modificaciones. Normalmente se trata de una <emphasis>captura de pantalla</emphasis> de la ventana principal que muestra la aplicación. </para>
<para>Para empezar, seleccione la plantilla que se adapte mejor a los objetivos de su aplicación. Luego, introduzca la información de las propiedades generales en los campos inferiores tal y como se muestra en el siguiente capítulo. </para>

<formalpara>
<title>Selección de un sistema de gestión del proyecto</title>
<para>Cada plantilla está ligada a un <link linkend="makesystems">sistema degestión de proyecto</link> específico. Actualmente no existe un medio directo para seleccionar libremente este sistema de gestión del proyecto. Deberá encontrar una plantilla que se adapte a sus necesidades o alterar su proyecto apropiadamente tras su creación. </para>
</formalpara>

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

<sect3 id="new-projects-start-general">
<title>Proporcionar información general</title>

<indexterm zone="new-projects-start-general">
  <primary>proyecto</primary>
  <secondary>propiedades</secondary></indexterm>
<indexterm zone="new-projects-start-general">
  <primary>propiedades</primary></indexterm>
<indexterm zone="new-projects-start-general">
  <primary>aplicación</primary>
  <secondary>nombre</secondary></indexterm>
<indexterm zone="new-projects-start-general">
  <primary>nombre</primary>
  <secondary>aplicación</secondary></indexterm>
<indexterm zone="new-projects-start-general">
  <primary>proyecto</primary>
  <secondary>carpeta</secondary></indexterm>
<indexterm zone="new-projects-start-general">
  <primary>carpeta</primary>
  <secondary>proyecto</secondary></indexterm>
<indexterm zone="new-projects-start-general">
  <primary>ruta</primary>
  <secondary>nuevo proyecto</secondary></indexterm>
<indexterm zone="new-projects-start-general">
  <primary>proyecto</primary>
  <secondary>autor</secondary></indexterm>
<indexterm zone="new-projects-start-general">
  <primary>proyecto</primary>
  <secondary>correo electrónico</secondary></indexterm>
<indexterm zone="new-projects-start-general">
  <primary>autor</primary></indexterm>
<indexterm zone="new-projects-start-general">
  <primary>correo electrónico</primary></indexterm>
<indexterm zone="new-projects-start-general">
  <primary>proyecto</primary>
  <secondary>main.cpp</secondary></indexterm>
<indexterm zone="new-projects-start-general">
  <primary>main.cpp</primary></indexterm>
<indexterm zone="new-projects-start-general">
  <primary>proyecto</primary>
  <secondary>licencia</secondary></indexterm>
<indexterm zone="new-projects-start-general">
  <primary>licencia</primary></indexterm>

<para>La parte inferior del diálogo <guilabel>Crear nuevo proyecto</guilabel>, en la página <guilabel>General</guilabel>, consiste en un cuadro con la etiqueta <guilabel>Propiedades</guilabel>. Aquí debe proporcionar alguna información general sobre su proyecto para que el &appwizard; sepa cómo generar la estructura inicial. </para>
<formalpara>
<title>Nombre de la aplicación</title>
<para>Por supuesto, su aplicación necesita un nombre. Introdúzcalo en el campo superior de las <guilabel>Propiedades</guilabel>, llamado <guilabel>Nombre de la aplicación</guilabel>. Usaremos <quote>MiAplicacion</quote> como ejemplo. </para>
</formalpara>
<para>Es posible que cuando lo haga note que el &appwizard; se niega a aceptar algunos caracteres especiales. Los únicos caracteres aceptados son: <itemizedlist>
  <listitem><para>caracteres en mayúsculas y minúsculas (sin acentos)</para></listitem>
  <listitem><para>números</para></listitem>
  <listitem><para>el carácter de subrayado</para></listitem>
</itemizedlist>
</para>
<para>La principal causa de esta restricción es que el &appwizard; usará el nombre de la aplicación como <emphasis>base para algunos nombres de clases</emphasis> que generará al crear un proyecto inicial. De este modo, el nombre de la aplicación debe ajustarse a las reglas del lenguaje de programación que va a utilizar. </para>
<formalpara>
<title>La carpeta del proyecto</title>
<para>La otra causa importante para esta restricción puede verla en la línea inferior del área <guilabel>Propiedades</guilabel>, etiquetada <guilabel>Ubicación final</guilabel>, y que muestra la carpeta donde el &appwizard; generará su aplicación. </para>
</formalpara>
<para>Mientras escribe el nombre de la aplicación notará que &appwizard; repite los caracteres introducidos al final de la línea etiquetada <guilabel>Ubicación final</guilabel>, utilizando únicamente caracteres en minúsculas. </para>
<para>Por lo tanto, debe seleccionar el nombre de su aplicación con cuidado. Si ha escrito el nombre de una carpeta existente, el &appwizard; no le permitirá continuar con el siguiente paso, manteniendo desactivado el botón <guibutton>Adelante &gt;</guibutton>. Además, le <emphasis>avisará</emphasis> en este caso añadiendo <quote>(carpeta/archivo existente)</quote> en la línea <guilabel>Ubicación final</guilabel>. </para>

<formalpara>
<title>La ruta inicial</title>
<para>Existen dos modos de seleccionar otra ruta para su nueva aplicación. Una consiste en seleccionar otro nombre. Aún así, esto no es siempre factible (&eg;, puede estar preparando otra versión de una aplicación ya existente). Como alternativa, puede seleccionar otra ruta para la carpeta de la aplicación. </para>
</formalpara>
<para>Puede hacer esto en la segunda línea de <guilabel>Propiedades</guilabel>, etiquetada <guilabel>Ubicación</guilabel>. Lo que debe introducir aquí es la <emphasis>ruta inicial</emphasis> de la carpeta de desarrollo de la nueva aplicación. El &appwizard; añade el nombre de la aplicación a esta ruta cuando inicializa el nuevo proyecto. El resultado se muestra en la línea <guilabel>Ubicación final</guilabel> para proporcionarle un mejor control sobre lo que está ocurriendo. </para>
<para>El &appwizard; copiará un <emphasis>valor inicial</emphasis> en el campo <guilabel>Ubicación</guilabel> al comienzo, que se toma de lo que ha introducido en el campo <guilabel>Carpeta predeterminada para los proyectos</guilabel> durante los <link linkend="setup-general">pasos de configuración general</link>. En nuestro caso, hemos indicado a &tdevelop; que utilice <filename class="directory">/home/devel/projects/</filename> como ruta inicial para nuestros proyectos. </para>
<para>Modifique el contenido del campo <guilabel>Ubicación</guilabel> de modo que la carpeta de desarrollo para su aplicación mostrada en la línea <guilabel>Ubicación final</guilabel> sea única. </para>
<!--TODO add tab description Project Options -->
<note><para>Tenga cuidado de que la ruta que introduzca en el campo <guilabel>Ubicación</guilabel> ya exista. En caso contrario, no podrá continuar con el siguiente paso. El &appwizard; le <emphasis>avisará</emphasis> si no existe la ruta añadiendo <quote>(no válida)</quote> a la línea <guilabel>Ubicación final</guilabel>. </para></note>

<screenshot id="screenshot-createnewprojectoptions">
  <mediaobject>
    <imageobject>
      <imagedata fileref="createnewprojectoptions.png" format="PNG"/>
    </imageobject>
    <caption><para>Preparar el nuevo proyecto para CVS </para></caption>
  </mediaobject>
</screenshot>

<formalpara>
<title>Información personal</title>
<para>Los siguientes campos no son tan críticos. Solo tiene que proporcionar su nombre (&ie;, el nombre de la persona que es responsable de la aplicación) en el campo <guilabel>Autor</guilabel>, y una dirección de correo electrónico válida en el campo <guilabel>Correo electrónico</guilabel>. De este modo, los usuarios de su aplicación podrán ponerse en contacto con el autor. </para>
</formalpara>

<note>
<orderedlist>
  <listitem><para>El &appwizard; rellena estos campos con algunos valores por omisión, tomados de los datos establecidos en el &kcontrolcenter;. Si los valores por omisión que ve en los campos <guilabel>Autor</guilabel> y <guilabel>Correo electrónico</guilabel> del diálogo <guilabel>Crear nuevo proyecto</guilabel> no son correctos, debería revisar su configuración de correo electrónico en el &kcontrolcenter;. </para></listitem>
  <listitem><para>El &appwizard; integrará esta información en las plantillas de comienzo del programa, si es necesario. En los programas en C++ de &kde;, por ejemplo, encontrará estos datos cerca del comienzo del archivo de código fuente <filename>main.cpp</filename>. </para></listitem>
  <listitem><para>De todos estos campos, el <guilabel>Correo electrónico</guilabel> es <emphasis>opcional</emphasis>, teniendo en cuenta que no todos los programadores pueden tener acceso a Internet. Puede dejar este campo en blanco si así lo desea y continuar sin problemas. </para></listitem>
</orderedlist>
</note>

<formalpara>
<title>Información sobre la versión y la licencia</title>
<para>Finalmente, introduzca un número inicial de versión para su nueva aplicación en el campo <guilabel>Versión</guilabel>, y seleccione la licencia bajo la que desea que esté su aplicación en la pestaña <guilabel>Licencia</guilabel>. </para>
</formalpara>

<para>Si ha seleccionado un tipo de aplicación para el que el &appwizard; proporciona textos de plantilla de código fuente comunes (&eg;, C/C++), verá el texto de notificación de la licencia en la tercera página de este diálogo <guilabel>Crear nuevo proyecto</guilabel> (vea más adelante el capítulo <link linkend="new-projects-start-templates">Proporcionar plantillas para las cabeceras y el código fuente</link>). </para>
<para>Si selecciona <quote>Personalizada</quote> en la pestaña <guilabel>Licencia</guilabel>, deberá proporcionar un texto propio para la licencia. </para>

<note><para>Tanto la versión como la información sobre la licencia serán también integradas en las plantillas de comienzo de un modo adecuado que proporciona el tipo de aplicación que ha seleccionado. </para></note>

<para>Una vez que haya introducido correctamente toda esta información, pulse el botón <guibutton>Adelante &gt;</guibutton> para proceder como se muestra en los siguientes capítulos. </para>
</sect3> <!-- new-projects-start-general -->

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

<sect2 id="new-projects-start-cvs">
<title>Proporcionar información sobre el sistema de versiones</title>

<indexterm zone="new-projects-start-cvs">
  <primary>CVS</primary>
  <secondary>nuevo proyecto</secondary></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary>proyecto</primary>
  <secondary>CVS</secondary></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary>base de datos</primary>
  <secondary>CVS</secondary></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary>versión</primary>
  <secondary>base de datos</secondary></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary>versión</primary>
  <secondary>CVS</secondary></indexterm>

<para>En un segundo paso, el &appwizard; le llevará a la página del <guilabel>Sistema de control de versiones</guilabel>, donde puede decidir qué sistema de control de versiones desea utilizar. </para>

<note><para>Esta discusión se concentra solo en las necesidades de la creación del proyecto. Para más información sobre &CVS;, vea más adelante el capítulo <link linkend="cvs">Uso de &CVS;</link>. </para></note>

<formalpara>
<title>No se desea usar un sistema de control de versiones</title>
<para>Inicialmente estará seleccionado <quote>Ninguno</quote> en la pestaña <guilabel>Sistema de control de versiones</guilabel>, y el resto de la página estará en blanco. Si no desea utilizar un sistema de control de versiones, pulse el botón <guibutton>Adelante &gt;</guibutton> para continuar. </para>
</formalpara>

<formalpara>
<title>Uso de &CVS;</title>
<para>En cualquier otro caso, deberá seleccionar el sistema de control de versiones que desea utilizar en la pestaña <guilabel>Sistema de control de versiones</guilabel>. Usaremos <quote>&cvs;</quote> en nuestro ejemplo. Si lo selecciona, el &appwizard; volverá a visualizar la página, mostrándole una serie de campos que debe rellenar. </para>
</formalpara>

<screenshot id="screenshot-newproject-cvs">
  <mediaobject>
    <imageobject>
      <imagedata fileref="create-new-project-cvs.png" format="PNG"/>
    </imageobject>
    <caption><para>Preparar el nuevo proyecto para CVS </para></caption>
  </mediaobject>
</screenshot>

<para>Un sistema de control de versiones como &CVS; (que significa <quote>Sistema de versiones concurrentes</quote>) almacena copias de los archivos seleccionados del proyecto en algún tipo de base de datos. Si utiliza &CVS;, podrá, entre otras cosas, subir (<quote>commit</quote>) estos archivos o descargarlos en la carpeta de su proyecto (<quote>checkout</quote>, o <quote>update</quote>). Lo que este sistema tiene de especial es que los archivos existentes en la base de datos de versiones se almacenan de un modo estructurado que le permite recuperar en cualquier momento un estado de desarrollo anterior, si lo necesita. Y &CVS; permite que varios programadores colaboren de un modo bastante fácil en un gran proyecto (como &tdevelop;) sin interferir en el trabajo de los demás. </para>

<indexterm zone="new-projects-start-cvs-root">
  <primary>CVS</primary>
  <secondary>raíz</secondary></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary>raíz</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>Raíz &CVS;</title>
<para>&CVS; necesita <emphasis>gestionar</emphasis> la base de datos de versiones que mantiene de sus archivos del proyecto. Para realizar esta tarea, mantiene cierta información especial de la base de datos en una carpeta propia, llamada <emphasis>raíz &CVS;</emphasis>. El primer paso para acomodar su nuevo proyecto a &CVS; consiste, pues, en indicarle a &tdevelop; dónde está ubicada esta raíz. </para>
</formalpara>

<para><emphasis>Raíz &CVS; local.</emphasis> Existen dos posibilidades básicas: usar una base de datos &CVS; <emphasis>local</emphasis>, o bien usar una base de datos situada en un <emphasis>servidor remoto</emphasis>. Si está desarrollando para usted mismo, tal vez prefiera usar la base de datos de &CVS; como si se tratara de un sistema de copias de seguridad en su propio sistema. Habitualmente establecerá esta raíz en su carpeta personal, dándole el nombre <filename>cvsroot</filename>, tal y como se muestra a continuación: </para>
<para><userinput><filename class="directory">/home/devel/cvsroot</filename></userinput> (donde <filename>devel</filename> se refiere al usuario <quote>programador</quote>, solo a título de ejemplo) </para>

<note><para>De hecho, esta es una forma abreviada. Exactamente, la raíz &CVS; local debe ser referida usando el prefijo <computeroutput>:local:</computeroutput>. La forma abreviada solo está permitida en los casos en que el nombre de archivo comience con una barra (<computeroutput>/</computeroutput>). El nombre completo para nuestro ejemplo de raíz &CVS; local sería: <filename class="directory">:local:/home/devel/cvsroot</filename> </para></note>

<para>Introduzca el nombre de la carpeta raíz de &CVS; que ha sido establecida en su sistema en el campo <guilabel>Raíz CVS</guilabel>. En principio, puede seleccionar cualquier nombre, e incluso usar múltiples bases de datos &CVS;, pero es recomendable que se atenga a la raíz &CVS; una vez establecida. </para>
<para><emphasis>Inicializar una nueva raíz &CVS;.</emphasis> Si todavía no existe una raíz &CVS;, &tdevelop; puede ordenar al sistema &CVS; que cree una por usted en la carpeta indicada. Solo tiene que marcar la casilla <guilabel>Iniciar raíz</guilabel> que hay debajo del campo <guilabel>Raíz CVS</guilabel>. </para>
<note><para>Como se ha dicho, &tdevelop; solo <emphasis>ordena</emphasis> al sistema &CVS; que inicialice una nueva raíz &CVS;, pero no hace nada por sí mismo en esta carpeta. Por fortuna, &CVS; es lo suficientemente inteligente como para comprobar si ya existe la carpeta raíz &CVS;. De ahí que no sea peligroso que marque <guilabel>Iniciar raíz</guilabel> sin tener en cuenta que ya pueda existir una carpeta raíz &CVS;. </para></note>

<para><emphasis>Raíz &CVS; remota.</emphasis> Existen ocasiones en las que la base de datos &CVS; se mantiene un un servidor remoto, especialmente cuando varios programadores trabajan en el mismo proyecto. En este caso, debe introducir el &URL; de la raíz &CVS; de este servidor en el campo <guilabel>Raíz CVS</guilabel>. Por ejemplo, si desea acceder al servidor &CVS; de &kde;: </para>
<para><userinput><filename class="directory">:pserver:<replaceable>mi_login</replaceable>@cvs.kde.org:/home/kde</filename></userinput> (donde <replaceable>mi_login</replaceable> se refiere al nombre de usuario establecido para su cuenta &CVS; de &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 remotos de &CVS;</title>
<para>Básicamente existen dos tipos de servidores de &CVS; remotos ampliamente usados: el <emphasis>pserver</emphasis>, que utiliza un protocolo no cifrado asegurado por una contraseña, y el servidor <emphasis>ext</emphasis>, que utiliza transferencias de datos cifrados con rsh o ssh. Se distinguen por el prefijo de &URL; que utilizan: </para>
</formalpara>
<para>
<filename>:pserver:</filename>
</para>
<para>para el tipo de <quote>servidor protegido por contraseña</quote>, y </para>
<para>
<filename>:ext:</filename>
</para>
<para>para el tipo de servidor que usa rsh o ssh. Por ejemplo </para>
<para>
<userinput><filename class="directory">:ext:<replaceable>mi_login</replaceable>@cvs.cervisia.sourceforge.net:/cvsroot/cervisia</filename></userinput>
</para>
<para>accede a la raíz &CVS; de la ampliamente usada herramienta de gestión <application>Cervisia</application> en el servidor de SourceForge. </para>
<para>Si desea utilizar un servidor de &CVS; que soporte acceso cifrado con rsh o ssh, debe indicarle a &tdevelop; el protocolo de cifrado que debe usar. Solo tiene que introducir <userinput>rsh</userinput> o <userinput>ssh</userinput> en el campo <guilabel>CVS_RSH</guilabel> de la página <guilabel>Sistema de control de versiones</guilabel> del diálogo <guilabel>Crear nuevo proyecto</guilabel>. </para>

<note><para>Debe tener en cuenta ciertos aspectos si usa un servidor cifrado para &CVS; con &tdevelop;. Vea el capítulo <link linkend="cvs">Uso de &CVS;</link> para más detalles. </para></note>

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

<formalpara id="new-projects-start-cvs-repository">
<title>El repositorio &CVS;</title>
<para>Hasta ahora solo le ha indicado a &tdevelop; dónde reside la raíz de &CVS; para manejar la base de datos de versiones y cómo acceder a ella. Ahora necesita indicarle a &tdevelop; con qué nombre desea que el &CVS; guarde los archivos de su proyecto en dicha base de datos. Este lugar que contendrá los archivos de su proyecto en el &CVS; se denomina <emphasis>repositorio</emphasis>. </para>
</formalpara>
<para>En principio, puede usar cualquier nombre para el repositorio &CVS; de los archivos de su proyecto, siempre que siga la especificación para nombrar archivos. Aún más, la mayor parte de los programadores usan simplemente el nombre de la misma aplicación. &CVS; creará una carpeta con este nombre en la raíz del &CVS;, de aquí que sea más fácil encontrarlo si mantiene el nombre de la aplicación para este propósito. </para>
<para>Solo debe introducir el nombre del repositorio que desea usar en el campo <guilabel>Repositorio CVS</guilabel> de la página <guilabel>Sistema de control de versiones</guilabel> del diálogo <guilabel>Crear nuevo proyecto</guilabel>. En nuestro ejemplo es: <userinput>MiAplicacion</userinput> </para>

<warning><para><emphasis>Tenga cuidado de no utilizar un repositorio existente.</emphasis> El sistema &CVS; no avisa sobre archivos duplicados, sino que aceptará cualquier cosa que no genere un conflicto formal. Si no tiene cuidado, acabará mezclándolo todo. </para></warning>

<formalpara>
<title>Los campos restantes</title>
<para>No queda demasiado trabajo por hacer. El &appwizard; ya habrá rellenado el resto de campos por usted. Con más detalle: </para>
</formalpara>
<para>El campo <guilabel>Proveedor</guilabel> se usa solo por razones de compatibilidad. Puede aceptar el <quote>proveedor</quote> predeterminado que el &appwizard; ha colocado en él. </para>
<para>El campo <guilabel>Mensaje</guilabel> le permite comentar el contenido inicial del &CVS;. Puede usar el texto que desee o dejar el texto <quote>nuevo proyecto</quote> que el &appwizard; ha colocado en él de forma predeterminada. </para>
<para>La <guilabel>Etiqueta de publicación</guilabel> contiene el nombre que va a etiquetar el estado inicial de su proyecto. Esta <emphasis>etiqueta</emphasis> denomina un cierto punto dentro del repositorio &CVS; por el que puede acceder más tarde a este estado de su desarrollo. Vea más detalles en el capítulo <link linkend="cvs">Uso de &CVS;</link>. </para>
<para>El &appwizard; ha colocado una etiqueta <quote>inicio</quote> por omisión en este campo, lo que constituye una buena propuesta. Puede aceptarla sin más. </para>

<note>
<para>Cuando cualquier información contenida en estos campos sea incorrecta, &tdevelop; no se dará cuenta normalmente hasta el momento en que construya su proyecto. Es el sistema &CVS; el que informará de estos errores cuando trate de construir el repositorio. Por ello, debería revisar la ventana de <guilabel>Mensajes</guilabel> de &tdevelop; cuando sea creado el proyecto durante el último paso. Si existe algún error relacionado con el &CVS;, en la mayoría de los casos observará un mensaje de error como este: </para>

<screen><computeroutput>
* cd '/home/devel/test' &amp;&amp; cvs -d '/home/devel/cvsroot' \
  import -m 'nuevo proyecto' '' 'proveedor' 'inicio' &amp;&amp;\
  sh /opt/kde3/share/apps/kdevcvs/buildcvs.sh . '' \
  '/home/devel/cvsroot'
* cvs [importación abortada]: /home/devel/cvsroot/CVSROOT: No existe el
 archivo o el directorio
* *** Terminado con estado: 1 ***
</computeroutput></screen>

<para>Si ocurre esto, deberá configurar el &CVS; manualmente (&tdevelop; habrá inicializado correctamente los archivos de su proyecto en este momento), o bien eliminar la carpeta del proyecto y comenzar de nuevo con la opción <guimenuitem>Nuevo proyecto</guimenuitem> del menú <guimenu>Proyecto</guimenu>. </para>
</note>

<para>Una vez que haya introducido toda la información relacionada con &CVS;, pulse el botón <guibutton>Adelante &gt;</guibutton> para continuar. </para>

<note><para>Si desea corregir algún error de la página anterior del diálogo <guilabel>Crear nuevo proyecto</guilabel>, pulse el botón <guibutton>&lt; Atrás</guibutton>. El &appwizard; recordará sus preferencias de la página actual, de modo que pueda continuar cuando vuelva a ella. </para></note>

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

<sect2 id="new-projects-start-templates">
<title>Proporcionar plantillas para cabeceras y código fuente</title>

<para>El siguiente paso le muestra una serie de páginas donde puede indicar cierta información que desee incluir en sus archivos de código fuente y de cabecera, si la tarea que seleccionada lo permite. </para>
<para>Tanto la plantilla de la cabecera como la del código fuente se proporcionan para las aplicaciones C y C++, cada una en su propia página. Para otros lenguajes es posible que solo exista la plantilla para el código fuente. Y en algunos casos incluso encontrará vacía esta página de plantilla. </para>
<para>Si se usa esta página, &appwizard; rellenará algunos comentarios comunes de cabeceras, que para una aplicación basada en C++ pueden aparecer como: </para>

<screen><computeroutput><literal>
/***************************************************************************
 *   Copyright (C) 2003 by Su nombre                                       *
 *   usted@usted.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>Otras plantillas proporcionarán información similar en un formato acorde a las definiciones del lenguaje de programación que desee utilizar. </para>
<para>Como habrá observado, el gestor de aplicaciones ha rellenado rápidamente la información que usted ha introducido en la primera página <guilabel>General</guilabel> del diálogo <guilabel>Crear nuevo proyecto</guilabel>, como el contenido de los campos <guilabel>Autor</guilabel> y <guilabel>Correo electrónico</guilabel>. También se ha insertado información sobre la licencia correcta que haya seleccionado en la pestaña <guilabel>Licencia</guilabel>. </para>

<sect3 id="new-projects-start-templates-edit">
<title>Cómo editar las plantillas</title>

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

<para>Las plantillas que ha preparado en el diálogo <guilabel>Crear nuevo proyecto</guilabel> serán procesadas posteriormente cada vez que le ordene a &tdevelop; que cree un nuevo archivo de código fuente o de cabecera. La información que ha proporcionado aquí será incluida al comienzo de cada archivo como una cabecera de documentación, antes del inicio de las partes que contienen el código. </para>
<para>No está obligado a usar texto plano en ningún caso. &tdevelop; conoce el contenido de algunas variables que le permiten incluir información real en el archivo. El &appwizard; usa de hecho algunas de estas variables para insertar información sobre el <guilabel>Autor</guilabel>, su <guilabel>Correo electrónico</guilabel> y la <guilabel>Licencia</guilabel> en el texto inicial de la plantilla. </para>

<variablelist>
<varlistentry>
<term>Incluir información &doxygen; en los archivos</term>
<listitem>
<para>Si, por ejemplo, desea que &doxygen; genere documentación de su &API; para mostrar más información sobre el contenido de los archivos en su lista de nombres de archivos, debe incluir las siguientes líneas en la plantilla del archivo de código fuente: </para>
<screen><computeroutput>
/**
 * \file $MODULE$.cpp
 * \brief (ponga aquí una descripción corta).
 **/
</computeroutput></screen>
<para>Cada vez que cree un nuevo archivo de código fuente, &tdevelop; sustituirá la variable <varname>$MODULE$</varname> por nombre del cuerpo del archivo recién creado. Por ejemplo, si ha creado una nueva clase de C++ llamada <classname>UnaSencillaPrueba</classname>, verá las siguientes líneas en el archivo <filename>unasencillaprueba.cpp</filename>: </para>
<screen><computeroutput>
/**
 * \file unasencillaprueba.cpp
 * \brief (ponga aquí una descripción corta).
 **/
</computeroutput></screen>
<para>Todavía tendrá que proporcionar la descripción corta tras la palabra clave <quote>\brief</quote>, pero parte del trabajo será relizado por usted de forma automática. </para>
</listitem>
</varlistentry>

<varlistentry>
<term>El archivo con el texto de licencia</term>
<listitem>
<para>Como otro ejemplo, puede incluir una referencia explícita al texto de licencia que desea utilizar en la plantilla. Use la variable <varname>$LICENSEFILE$</varname> para este propósito e incluya, por ejemplo, esta línea: </para>

<screen><computeroutput>
//   Vea $LICENSEFILE$ para el texto completo de la licencia.
</computeroutput></screen>
<para>El &appwizard; reemplazará la variable <varname>$LICENSEFILE$</varname> con el nombre del archivo donde se puede encontrar el texto completo de la licencia, como por ejemplo: </para>
<screen><computeroutput>
//   Vea COPYING para el texto completo de la licencia.
</computeroutput></screen>
<para>para la licencia <acronym>GPL</acronym>, o </para>
<screen><computeroutput>
//   Vea LICENSE.BSD para el texto completo de la licencia.
</computeroutput></screen>
<para>si desea poner su aplicación bajo la licencia <acronym>BSD</acronym>. </para>
<para>Existen, por supuesto, más variables que &tdevelop; conoce. Vea la sección <link linkend="newfiles-edittemplates">Edición de plantillas</link> en el capítulo <link linkend="editing">Herramientas de edición</link> para ver una lista de las posibles variables que puede usar. </para>
</listitem>
</varlistentry>
</variablelist>

<note><para>Las plantillas que ha definido aquí tendrán efecto únicamente después de que el &appwizard; haya creado el nuevo proyecto. Encontrará esta información al principio de los archivos que cree usted mismo durante el proceso de desarrollo. Al crear los archivos iniciales, el &appwizard; usará algunas plantillas estándar predefinidas. Deberá adaptar manualmente estos archivos iniciales según sus propias necesidades. </para></note>

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

<sect2 id="new-projects-start-build">
<title>Construir los archivos iniciales del proyecto</title>

<indexterm zone="new-projects-start-build">
  <primary>proyecto</primary>
  <secondary>nuevo</secondary>
  <tertiary>construir</tertiary></indexterm>
<indexterm zone="new-projects-start-build">
  <primary>proyecto</primary>
  <secondary>construcción inicial</secondary></indexterm>

<para>Casi todo está terminado en este momento. En la última página de plantillas, el botón <guibutton>Adelante &gt;</guibutton> habrá cambiado ahora a <guibutton>Finalizar</guibutton>. </para>
<para><emphasis>Piense dos veces antes de pulsarlo.</emphasis> Todavía tiene la oportunidad de revisar todo repetidamente usando el botón <guibutton>&lt; Atrás</guibutton>. Como el &appwizard; recuerda toda la información que ha introducido, sería recomendable que se tomara algo de tiempo en revisar todo una vez más. En caso de que utilice un &CVS; local, no se olvide de comprobar el nombre del <emphasis>repositorio &CVS;</emphasis> (no debe de existir una subcarpeta con ese nombre en la carpeta raíz del &CVS;; y, si existe, pruebe con otro nombre de repositorio). </para>
<para>Si no desea generar el nuevo proyecto, cancele el diálogo <guilabel>Crear nuevo proyecto</guilabel> con el botón <guibutton>Cancelar</guibutton>. En caso contrario, pulse el botón <guibutton>Finalizar</guibutton> y observe en la ventana de <guilabel>Mensajes</guilabel> cómo inicia el proyecto el &appwizard;. </para>
<para>Si desea utilizar un sistema de versiones (&CVS;), se realizarán realmente dos procesos. Primero, el &appwizard; generará las carpetas del proyecto y sus archivos, y luego llamará al programa &CVS;, que reinicia la ventana <guilabel>Mensajes</guilabel> con su propia salida. Si ocurre un error en cualquiera de estos pasos, el proceso se detendrá mostrándole un mensaje de error adecuado en la ventana. </para>

<note><para>En muchos casos, cuando su nuevo proyecto haya sido generado de este modo, &tdevelop; cargará automáticamente uno o más archivos de código fuente de los módulos básicamente más importantes para que pueda comenzar a trabajar con ellos inmediatamente. No obstante, dependiendo de la plantilla inicialmente seleccionada en el &appwizard;, se mostrarán unos u otros módulos (o ninguno). </para></note>

<para>No olvide comprobar inicialmente todo lo que ha generado el &appwizard;. Por ejemplo, puede querer cambiar la información inicial de las cabeceras según sus propias plantillas. Normalmente las encontrará en una subcarpeta llamada <filename class="directory">templates</filename> dentro de la carpeta de su proyecto. Unas sencillas operaciones de copia de archivos bastarán para modificarlas. </para>
<para>Luego sería recomendable que <emphasis>compilara el proyecto inicial</emphasis> antes de comenzar a cambiar el código. En la mayor parte de los casos, será posible realizar esta compilación inicial. De este modo, podrá asegurarse de que el proyecto ha sido generado realmente de acuerdo con sus necesidades. Si no fue así, solo tiene que eliminar la carpeta del proyecto (también en la raíz de su &CVS; local, si está usando uno) y comenzar de nuevo. </para>

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

  <indexterm zone="defaultbuild-warning">
    <primary>configuración de construcción predeterminada</primary>
    <secondary>aviso</secondary></indexterm>
  <indexterm zone="defaultbuild-warning">
    <primary>configuraciones de construcción</primary>
    <secondary>aviso de construcción predeterminada</secondary></indexterm>
  <indexterm zone="defaultbuild-warning">
    <primary>aviso</primary>
    <secondary>configuración de construcción predeterminada</secondary></indexterm>

  <para>Antes de compilar su nuevo proyecto por primera vez, eche un vistazo a <menuchoice><guimenu>Proyecto</guimenu> <guimenuitem>Configuración de construcción</guimenuitem></menuchoice>. Si existen tres secciones mostradas como: <guimenuitem>predeterminada</guimenuitem>, <guimenuitem>optimizada</guimenuitem> y <guimenuitem>depuración</guimenuitem>, estando seleccionada <guimenuitem>depuración</guimenuitem>, utilice esta opción, o use <guimenuitem>optimizada</guimenuitem> en su lugar. </para>
  <para>Debido a algunas limitaciones en la configuración de autoconf y automake, no debería <emphasis>bajo ningún concepto</emphasis> construir su proyecto con la configuración <guimenuitem>predeterminada</guimenuitem>. Esto ocasionaría que se perdieran ciertas preferencias internas de carpetas, haciendo que el comando <command>configure</command> genere errores cuando intente usarlo más adelante con las configuraciones de construcción <guimenuitem>optimizada</guimenuitem> o <guimenuitem>depuración</guimenuitem>. </para>
  <para>Esto se aplica solo a estas posibilidades de selección múltiple. Si el tipo de aplicación que ha seleccionado proporciona solo una configuración de construcción <guimenuitem>predeterminada</guimenuitem>, deberá, por supuesto, usar esta opción. </para>
</warning>

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

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

<sect1 id="projects-configure">
<title>Configuración de proyectos</title>

<para>(... pendiente de escribir ...)</para>

</sect1>

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