<?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 % Italian "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
>Manuale Utente di &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
>&kdevelop; è un ambiente di sviluppo integrato che può essere usato per un grande numero di attività.</para>
  </abstract>

  <keywordset>
    <keyword
>KDE</keyword>
    <keyword
>KDevelop</keyword>
    <keyword
>IDE</keyword>
    <keyword
>sviluppo</keyword>
    <keyword
>programmazione</keyword>
  </keywordset>

</bookinfo>

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

<chapter id="survey-manual">
<title
>Contenuto di questo manuale</title>

<para
>Questo manuale utente descrive l'uso dell'ambiente di sviluppo integrato (IDE) &kdevelop; &kdevrelease;. Non è un manuale di programmazione e non descrive nel dettaglio il processo di sviluppo, ma fornisce una guida nella gestione dell'IDE. </para>
<para
>Si troveranno informazioni sui seguenti argomenti: </para>
<itemizedlist>
  <listitem
><para
><link linkend="nutshell"
>In poche parole &mdash; trucchi e suggerimenti</link
> &mdash; un veloce riferimento ai comandi e alle azioni più usate, e una breve guida per risolvere i problemi comuni quando si lavora con &kdevelop;. </para
></listitem>

  <listitem
><para
><link linkend="unixdev"
>Sviluppo su &UNIX;</link
> &mdash; una panoramica storica sullo sviluppo di applicazioni su &UNIX;, sui principali strumenti necessari e sul perché si ha bisogno di un IDE. </para
></listitem>

  <listitem
><para
><link linkend="kdevelop-install"
>Installare &kdevelop;</link
> &mdash; viene indicato dove ottenere &kdevelop; e come farlo funzionare. </para
></listitem>

  <listitem
><para
><link linkend="getting-started"
>Iniziare ad usare &kdevelop;</link
> &mdash; una veloce introduzione a questo IDE e all'utilizzo dei progetti. </para
></listitem>

  <listitem
><para
><link linkend="kdevelop-survey"
>Caratteristiche di &kdevelop;</link
> &mdash; prosegue il capitolo precedente descrivendo l'aspetto di &kdevelop; e i suoi componenti. </para
></listitem>

  <listitem
><para
><link linkend="app-menus"
>Menu e barre degli strumenti</link
> &mdash; (nell'appendice) fornisce una piccola panoramica dei menu e delle barre degli strumenti disponibili. </para
></listitem>

  <listitem
><para
><link linkend="app-shortcuts"
>Scorciatoie da tastiera</link
> &mdash; (nell'appendice) elenca le sequenze di tasti da usare per accedere velocemente a specifiche operazioni. </para
></listitem>

  <listitem
><para
><link linkend="setup"
>Configurare &kdevelop;</link
> &mdash; mostra come si può adattare l'IDE alle proprie esigenze. </para
></listitem>


  <listitem
><para
><link linkend="kdevelop-scripting"
>Usare gli script in &kdevelop;</link
> &mdash; viene descritto come aggiungere script per automatizzare il funzionamento di &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"
>Gestione avanzata dei progetti</link
> &mdash; illustra come caricare progetti già esistenti, convertire progetti di vecchie versioni di &kdevelop; e importare altri progetti esistenti. Viene inoltre discussa la configurazione delle opzioni del progetto. </para
></listitem>

  <listitem
><para
><link linkend="editing"
>Strumenti di editing</link
> &mdash; tutto il necessario per scrivere i file sorgente: dall'uso dell'editor e la ricerca del testo localmente o globalmente fino all'integrazione nel progetto di nuovi file e classi. </para
></listitem>

  <listitem
><para
><link linkend="file-browsers"
>Il browser dei file</link
> &mdash; illustra vari strumenti per esaminare la struttura del proprio progetto e indica come accedere ai file con cui si vuole lavorare. </para
></listitem>

  <listitem
><para
><link linkend="class-browsers"
>Il browser delle classi</link
> &mdash; descrive uno dei più potenti strumenti di &kdevelop; che permette di navigare attraverso le dipendenze delle classi e creare classi e metodi. </para
></listitem>

  <listitem
><para
><link linkend="documentation"
>Documentazione</link
> &mdash; mostra come accedere alla ricca documentazione incorporata di &kdevelop;, indica come creare la documentazione del proprio progetto, sia la concisa e potente documentazione delle API che fornisce una panoramica di tutti i propri file sorgente sia la documentazione basata su docbook. </para
></listitem>
  <listitem
><para
><link linkend="project-management"
>Compilazione e gestione dei progetti</link
> &mdash; si occupa della creazione e della gestione dei progetti, descrivendo sia autoconf e automake che l'impostazione di Makefile personalizzati; insegna come usare il compilatore o le opzioni di make per adattare l'applicazione alle proprie esigenze. </para
></listitem>

  <listitem
><para
><link linkend="adv-build-management"
>Gestione avanzata della compilazione</link
> &mdash; illustra come ottenere compilazioni multiple, come compilare per diverse piattaforme e come costruire un sistema embedded usando le librerie <application
>Qt/embedded</application
>. </para
></listitem>

  <listitem
><para
><link linkend="debugger"
>L'interfaccia del debugger</link
> &mdash; descrive come usare l'interfaccia integrata del debugger <application
>gdb</application
> in modo da scovare i bug senza dover uscire da &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"
>Usare CVS</link
> &mdash; descrive la manutenzione del proprio progetto con il sistema CVS, necessario se molti sviluppatori lavorano allo stesso progetto. </para
></listitem>

  <listitem
><para
><link linkend="external-progs"
>Programmi Esterni</link
> &mdash; mostra come accedere a programmi esterni e strumenti attraverso &kdevelop; in modo da espanderne le capacità. </para
></listitem>

  <listitem
><para
><link linkend="plugin-tools"
>Plugin</link
> &mdash; fornisce una panoramica sui componenti che costituiscono &kdevelop; e illustra come possono essere configurati in modo che siano caricati solo quelli necessari. </para
></listitem>

  <listitem
><para
>Alcuni argomenti comuni sono stati inseriti nell'<emphasis
>appendice</emphasis
>, che comprende: <itemizedlist>
    <listitem
><para
>Una <link linkend="app-menus"
>panoramica dei menu e delle barre degli strumenti</link
> </para
></listitem>

    <listitem
><para
>L'elenco delle <link linkend="app-shortcuts"
>scorciatoie da tastiera</link
> &mdash; sequenze di tasti che si possono usare per lavorare senza dover ricorrere al mouse. </para
></listitem>

    <listitem
><para
>La descrizione dei <link linkend="app-files"
>file di configurazione</link
> &mdash; usati da &kdevelop; per salvare la propria configurazione interna. Sono utili se succede un inconveniente durante la fase di setup. </para
></listitem>

    <listitem
><para
>La descrizione dei <link linkend="plugin-tools"
>Plugin</link
> &mdash; che possono essere usati per adattare &kdevelop; alle proprie esigenze. </para
></listitem>
  </itemizedlist>
  </para
></listitem>
</itemizedlist>
</chapter>

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

<chapter id="nutshell">
<title
>In poche parole &mdash; trucchi e suggerimenti</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
>Le informazioni di questo capitolo sono intese come un veloce riferimento per iniziare e sono utili se si dimenticano (momentaneamente) alcuni concetti di base. Sono illustrati alcuni brevi suggerimenti per risolvere alcuni problemi che si incontrano frequentemente quando si lavora con &kdevelop;. </para>
<para
>Se si desiderano ulteriori informazioni su un argomento, seguire il relativo collegamento. </para>
<para
>Sono disponibili informazioni sui seguenti argomenti:  </para>
<simplelist>
  <member
><link linkend="nutshellitem-look-and-feel"
>Aspetto</link
></member>
  <member
><link linkend="nutshellitem-projects"
>Progetti</link
></member>
  <member
><link linkend="nutshellitem-compilation"
>Compilazione</link
></member>
  <member
><link linkend="nutshellitem-automake"
>Gestore Automake</link
></member>
  <member
><link linkend="nutshellitem-compilemake"
>Problemi di compilazione/Make</link
></member>
  <member
><link linkend="nutshellitem-others"
>Altri argomenti</link
></member>
</simplelist>

<itemizedlist id="nutshellitem-look-and-feel">
  <title
>Aspetto</title>

  <listitem>
    <formalpara id="nutshell-IDEAl-tabs">
    <title
><link linkend="setup-ui-toolview"
>Impostare linguette degli strumenti più piccole nella modalità IDEAl</link
></title>
    <para
>Per default &kdevelop; visualizza delle linguette con il testo attorno all'area di lavoro. Si può risparmiare spazio cambiando questo aspetto nella finestra di dialogo della configurazione di &kdevelop; (<menuchoice
><guimenu
>Impostazioni</guimenu
> <guimenuitem
>Configura KDevelop...</guimenuitem
> <guimenuitem
>Interfaccia Utente</guimenuitem
></menuchoice
>). </para>
    </formalpara>
    <para
>Se si ha una versione di &kdevelop; più vecchia potrebbe non essere disponibile questa finestra di configurazione. Per cambiare la visualizzazione delle linguette, inserire la voce <computeroutput
>MDIStyle</computeroutput
> nel tag <computeroutput
>[UI]</computeroutput
> nel file di configurazione <filename
>$KDEHOME/share/config/kdeveloprc</filename
> in questo modo: </para>
    <simplelist>
      <member
><computeroutput
>MDIStyle=0</computeroutput
>: solo icone</member>
      <member
><computeroutput
>MDIStyle=1</computeroutput
>: solo testo (default)</member>
      <!--<member
><computeroutput
>MDIStyle=2</computeroutput
>: icons only on smaller tabs (not very useful)</member
>-->
      <member
><computeroutput
>MDIStyle=3</computeroutput
>: icone e testo</member>
    </simplelist>
  </listitem>

  <!-- ### remove this entry when the bug is repaired -->
  <listitem>
    <formalpara id="nutshell-weird-style">
    <title
>Strani colori dei caratteri e/o stili di visualizzazione</title>
    <para
>Se si notano lettere colorate in modo casuale dappertutto (cioè su pulsanti, barre degli strumenti, ecc.) e la finestra di &kdevelop; sembra usare uno stile di visualizzazione errato, potrebbe essere di aiuto questa operazione:  </para>
    </formalpara>
    <itemizedlist>
      <listitem
><para
>Nel proprio file di configurazione <filename
>$KDEHOME/share/config/kdeveloprc</filename
> trovare la linea che contiene <quote
><computeroutput
>Style=Checked</computeroutput
></quote
> e rimuoverla. Poi riavviare &kdevelop;. </para
></listitem>
    </itemizedlist>
    <para
>(Questo inconveniente può accadere dopo aver fatto clic su un file .ui in una finestra che visualizza i file. &kdevelop; eseguirà il programma <application
>KUIViewer</application
> per mostrare l'interfaccia grafica prodotta da quel file). </para>
  </listitem>

  <listitem>
    <formalpara id="nutshell-full-screen">
    <title
><link linkend="maximize-workspace"
>Modalità schermo intero</link
></title>
    <para
>Selezionare <menuchoice
><guimenu
>Visualizza</guimenu
> <guimenuitem
>Modalità schermo intero</guimenuitem
> </menuchoice
> dai menu oppure premere <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"
>Nascondere/mostrare la barra dei menu</link
></title>
    <para
>Per nascondere la barra dei menu selezionare <menuchoice
> <guimenu
>Impostazioni</guimenu
> <guimenuitem
>Mostra la barra dei menu</guimenuitem
> </menuchoice
> dal menu o premere <keycombo
> <keycap
>Ctrl</keycap
> <keycap
>M</keycap
> </keycombo
>. Per visualizzarla nuovamente premere <keycombo
> <keycap
>Ctrl</keycap
> <keycap
>M</keycap
> </keycombo
>. </para>
    </formalpara>
  </listitem>

</itemizedlist>

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

  <listitem>
    <formalpara id="nutshell-new-project">
    <title
><link linkend="new-projects"
>Creare un nuovo progetto</link
></title>
    <para
>Avviare la <link linkend="applicationwizard"
>procedura guidata per le applicazioni</link
> attraverso <menuchoice
><guimenu
>Progetto</guimenu
> <guimenuitem
>Nuovo progetto...</guimenuitem
></menuchoice
>. </para>
    </formalpara>
  </listitem>

  <listitem>
    <formalpara id="nutshell-new-custom-project">
      <title
>Creare un progetto personalizzato</title>
      <para
>Non esiste un metodo per creare direttamente un progetto personalizzato (cioè un progetto che usa dei propri makefile). Usare <menuchoice
><guimenu
>Progetto</guimenu
> <guimenuitem
>Importa progetto esistente</guimenuitem
></menuchoice
>. Ricordarsi di impostare il <guilabel
>Tipo di progetto</guilabel
> opportuno con l'etichetta <quote
>(Custom Makefiles)</quote
>. </para>
    </formalpara>
  </listitem>

  <listitem>
    <formalpara id="nutshell-project-options">
    <title
><link linkend="project-options"
>Impostare inizialmente le opzioni del progetto</link
></title>
    <para
>Quando si avvia un nuovo progetto non dimenticarsi di impostare le opzioni desiderate attraverso <menuchoice
><guimenu
>Progetto</guimenu
><guimenuitem
>Opzioni progetto...</guimenuitem
></menuchoice
>. </para>
    </formalpara>
  </listitem>
</itemizedlist>

<itemizedlist id="nutshellitem-compilation">
<title
>Compilazione</title>
  <listitem>
    <formalpara id="nutshell-compilemsg-detail">
    <title
><link linkend="setup-main-compile"
>Dettagli mancanti nei messaggi di compilazione</link
></title>
    <para
>Se durante la compilazione si nota che nella finestra <guilabel
>Messaggi</guilabel
> mancano alcune informazioni, ciò potrebbe essere dovuto ad un livello dei dettagli troppo basso. Fare clic con il tasto destro nella finestra e selezionare un altro livello nel menu contestuale. </para>
    </formalpara>
  </listitem>
</itemizedlist>

<itemizedlist id="nutshellitem-automake">
<title
><link linkend="automake-manager"
>Gestore Automake</link
></title>

    <listitem>
      <formalpara id="nutshell-new-project-file">
      <title
>Creare nuovi file in un progetto</title>
      <para
>Selezionare il sottoprogetto nella metà superiore del Gestore Automake, poi fare clic con il tasto destro nella metà inferiore sul nome del gruppo nel quale si vuole aggiungere il file e selezionare <guimenuitem
>Crea nuovo file...</guimenuitem
>. </para>
      </formalpara>
    </listitem>

    <listitem>
      <formalpara id="nutshell-add-project-file">
      <title
>Aggiungere file esistenti ad un progetto</title>

      <para
>Selezionare il sottoprogetto nella metà superiore del Gestore Automake, poi fare clic con il tasto destro nella metà inferiore sul nome del gruppo nel quale si vuole aggiungere il file e selezionare <guimenuitem
>Aggiungi file esistenti...</guimenuitem
>. </para>
      </formalpara>
    </listitem>

    <listitem>
      <formalpara id="nutshell-del-project-file">
      <title
>Rimuovere un file da un progetto</title>

      <para
>Selezionare il sottoprogetto nella metà superiore del Gestore Automake, poi nella metà inferiore aprire la lista dove si vuole rimuovere il file, fare clic con il tasto destro sul file nella lista e selezionare <guimenuitem
>Rimuovi</guimenuitem
>. </para>
      </formalpara>
    </listitem>
  </itemizedlist>

<itemizedlist id="nutshellitem-compilemake">
  <title
>Problemi di compilazione/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"
>Il progetto non viene compilato dopo aver essere passati dal target di default ad un'altro target o viceversa.</link
></title>
    <para
>Esiste un problema con il meccanismo di &automake;/&autoconf;. Se <menuchoice
><guimenu
>Progetto</guimenu
><guimenuitem
>Configurazione compilazione</guimenuitem
></menuchoice
> fornisce tre opzioni chiamate <guimenuitem
>default</guimenuitem
>, <guimenuitem
>optimized</guimenuitem
>, e <guimenuitem
>debug</guimenuitem
> selezionare default <emphasis
>o</emphasis
> debug. </para>
    </formalpara>
    <itemizedlist>
      <listitem
><para
>Quando il progetto è stato compilato con la modalità default, non verrà più compilato nelle modalità debug o optimized. </para
></listitem>
      <listitem
><para
>Quando il progetto è stato compilato con la modalità debug o optimized non verrà più compilato con la modalità default.</para
></listitem>
     </itemizedlist>
  </listitem>

  <listitem>
    <formalpara id="nutshell-autoconf-problem">
    <title
>Errore <quote
>Wrong <command
>autoconf</command
> version</quote
> ecc.</title>

    <para
>Ci sono diversi errori dovuti a versioni troppo vecchie di <application
>autoconf</application
> ecc. che impediscono a <command
>configure</command
> di funzionare correttamente. Avviare <command
>autoreconf</command
> nell'albero di directory dove risiedono i relativi file <filename
>configure.in</filename
>. Questo comando tenterà di aggiornare le informazioni nei file del &GNU; Build System. Vedere <command
>man autoreconf</command
> per ulteriori informazioni. </para>
    </formalpara>
  </listitem>
</itemizedlist>

<itemizedlist id="nutshellitem-others">
<title
>Altri argomenti</title>
  <listitem>
    <formalpara id="nutshell-others-files">
    <title
><link linkend="app-files"
>File di configurazione usati da &kdevelop;</link
></title>
    <para
>Normalmente non si ci deve preoccupare di questi file, che si rendono utili solo se succedono inconvenienti durante la fase di setup. </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
>Strumenti di editing</title>

<sect1 id="editing-snippets">
<title
>Frammenti di codice</title>

<itemizedlist>
  <title
>Caratteristiche (panoramica preliminare)</title>
  <listitem
><para
>SnippetPart aggiunge un vista che viene agganciata a destra </para
></listitem>
  <listitem
><para
>L'aggiunta, la modifica e la rimozione di frammenti di codice può essere fatta attraverso un menu a comparsa </para
></listitem>
  <listitem
><para
>Facendo doppio clic su una porzione di codice la inserirà nella vista attiva nella posizione attuale del cursore </para
></listitem>
  <listitem
><para
>Gli aiuti mostrano i contenuti di un frammento di codice </para
></listitem>
  <listitem
><para
>I frammenti di codice sono memorizzati nella cartella home, quindi ogni utente può avere i propri. </para
></listitem>
  <listitem
><para
>I frammenti di codice possono contenere variabili sotto forma di $NOMEVARIABILE$. Quando vengono usati sarà chiesto all'utente di fornire i valori sostitutivi per le variabili </para
></listitem>
</itemizedlist>
</sect1
> <!-- editing-snippets -->

<sect1 id="keyboardmapping">
<title
>Tasti Speciali</title>
<indexterm zone="keyboardmapping"
><primary
>scorciatoie</primary
></indexterm>

<para
>Di seguito verranno elencate le scorciatoie dell'editor di default. Possono essere configurate a piacimento. </para>

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

<row
><entry
><para
><keycap
>Sinistra </keycap
></para
></entry>
<entry
><para
>Si muove di un carattere a sinistra </para
></entry
></row>

<row
><entry
><para
><keycap
>Destra </keycap
></para
></entry>
<entry
><para
>Si muove di un carattere a destra </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> Sinistra </keycap
></keycombo
></para
></entry>
<entry
><para
>Si muove di una parola a sinistra </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> Destra </keycap
></keycombo
></para
></entry>
<entry
><para
>Si muove di una parola a destra </para
></entry
></row>

<row
><entry
><para
><keycap
>Su </keycap
></para
></entry>
<entry
><para
>Si muove in alto di una linea </para
></entry
></row>

<row
><entry
><para
><keycap
>Giù </keycap
></para
></entry>
<entry
><para
>Si muove in basso di una linea </para
></entry
></row>

<row
><entry
><para
><keycap
>PgUp </keycap
></para
></entry>
<entry
><para
>Si muove in alto di una pagina </para
></entry
></row>

<row
><entry
><para
><keycap
>PgDn </keycap
></para
></entry>
<entry
><para
>Si muove in basso di una pagina </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> PgUp </keycap
></keycombo
></para
></entry>
<entry
><para
>Si muove all'inizio del file </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> PgDn </keycap
></keycombo
></para
></entry>
<entry
><para
>Si muove alla fine del file </para
></entry
></row>

<row
><entry
><para
><keycap
>Home </keycap
></para
></entry>
<entry
><para
>Si muove all'inizio della linea </para
></entry
></row>

<row
><entry
><para
><keycap
>Fine </keycap
></para
></entry>
<entry
><para
>Si muove alla fine della linea </para
></entry
></row>

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

<para
>Per tutti le combinazioni sopra elencate, può essere premuto in aggiunta il tasto Shift per selezionare dalla posizione attuale a quella seguente. </para>

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

<row
><entry
><para
><keycap
>Backspace </keycap
></para
></entry>
<entry
><para
>Cancella il carattere a sinistra </para
></entry
></row>

<row
><entry
><para
><keycap
>Canc </keycap
></para
></entry>
<entry
><para
>Cancella il carattere sotto al cursore </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> C </keycap
></keycombo
></para
></entry>
<entry
><para
>Copia il testo selezionato negli appunti </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> V </keycap
></keycombo
></para
></entry>
<entry
><para
>Incolla il testo selezionato negli appunti </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> X </keycap
></keycombo
></para
></entry>
<entry
><para
>Cancella il testo selezionato e lo mette negli appunti </para
></entry
></row>

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

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

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

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

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

<sect1 id="editing-reporter">
<title
>Reporter di problema</title>

<para
>(... da scrivere ...) </para>
</sect1
> <!-- editing-reporter -->

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

<sect1 id="searchinggrepping">
<title
>Cercare e usare grep</title>
<indexterm zone="searchinggrepping"
><primary
>cercare</primary
></indexterm>
<indexterm zone="searchinggrepping"
><primary
>trovare</primary
></indexterm>

<sect2 id="searching">
<title
>Cercare il testo</title>

<para
><keycombo
><keycap
>Ctrl</keycap
><keycap
>F</keycap
></keycombo
> - Trova <keycombo
><keycap
>Ctrl</keycap
><keycap
>R</keycap
></keycombo
> - Sostituisci </para>

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


<sect2 id="isearch">
<title
>ISearch</title>
<indexterm zone="isearch"
><primary
>isearch</primary
></indexterm>
<indexterm zone="isearch"
><primary
>ricerca incrementale</primary
></indexterm>
<indexterm zone="isearch"
><primary
>cerca</primary
><secondary
>incrementale</secondary
></indexterm>

<para
>La ricerca tradizionale con il comando <menuchoice
><guimenu
>Modifica</guimenu
> <guimenuitem
>Trova</guimenuitem
></menuchoice
> richiede di specificare l'intero termine da cercare prima di avviare la ricerca. Spesso è molto più veloce cercare in modo incrementale. Se si fa clic nel campo chiamato <guilabel
>ISearch</guilabel
> nella barra degli strumenti, la ricerca verrà effettuata mentre si digita. Spesso il termine desiderato viene trovato dopo aver scritto 3 o 4 lettere. </para>

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


<sect2 id="grep">
<title
>Grep</title>
<indexterm zone="grep"
><primary
>cerca</primary
><secondary
>nei file</secondary
></indexterm>

<para
>Entrambi i meccanismi di ricerca descritti prima sono limitati all'interno di un file sorgente. Attraverso la voce <guimenuitem
>Trova nei file...</guimenuitem
> nel menu <guimenu
>Modifica</guimenu
> è disponibile uno strumento aggiuntivo che permette di cercare attraverso un insieme (anche grande) di file. Fondamentalmente è un frontend per il programma &grep;(1). </para>

<para
>Nella finestra di dialogo si può specificare in quali file effettuare la ricerca. In una casella a scelta multipla sono disponibili parecchi caratteri jolly. In questo modo si può facilmente restringere il meccanismo di ricerca ai file header. Inoltre, si può specificare la directory da dove far partire la ricerca. Se si seleziona la casella <guibutton
>Ricorsivo</guibutton
>, la ricerca proseguirà in tutte le sottodirectory della gerarchia sottostante alla directory specificata. </para>

<para
>Generalmente il termine da cercare è un'espressione regolare che segue la sintassi POSIX. Per esempio, si può usare il termine <literal
>"\&lt;K.*"</literal
> per trovare tutte le parole che iniziano con la lettera K. I seguenti caratteri sono interpretati in maniera speciale: </para>

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

<row
><entry>
  <literal
>.</literal>
</entry
><entry
>Corrisponde ad ogni carattere </entry
></row>
<row
><entry>
  <literal
>^</literal>
</entry
><entry
>Corrisponde all'inizio di una linea </entry
></row>
<row
><entry>
  <literal
>$</literal>
</entry
><entry
>Corrisponde alla fine di una linea </entry
></row>
<row
><entry>
  <literal
>\&lt;</literal>
</entry
><entry
>Corrisponde all'inizio di una parola </entry
></row>
<row
><entry>
  <literal
>\&gt;</literal>
</entry
><entry
>Corrisponde alla fine di una parola </entry
></row>
<row
><entry>
  <literal
>?</literal>
</entry
><entry
>L'elemento precedente è presente meno di una volta </entry
></row>
<row
><entry>
  <literal
>*</literal>
</entry
><entry
>L'elemento precedente è presente zero o più volte </entry
></row>
<row
><entry>
  <literal
>+</literal>
</entry
><entry
>L'elemento precedente è presente una o più volte </entry
></row>
<row
><entry>
  <literal
>{n}</literal>
</entry
><entry
>L'elemento precedente è presente esattamente n volte </entry
></row>
<row
><entry>
  <literal
>{n,}</literal>
</entry
><entry
>L'elemento precedente è presente n o più volte </entry
></row>
<row
><entry>
  <literal
>{,n}</literal>
</entry
><entry
>L'elemento precedente è presente meno di n volte </entry
></row>
<row
><entry>
  <literal
>{n,m}</literal>
</entry
><entry
>L'elemento precedente è presente almeno <literal
>n</literal
> volte ma meno di <literal
>m</literal
> volte </entry
></row>

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

<para
>I riferimenti alle espressioni tra parentesi sono disponibili tramite la notazione <literal
>\n</literal
>. </para>

<para
>In aggiunta per i programmatori C++ ci sono alcuni modelli di ricerca tipici. Questi permettono ad esempio di cercare tutte le chiamate alle funzioni membro di un certo oggetto. </para>

<para
>Quando si avvia una ricerca facendo clic sul pulsante <guibutton
>Trova</guibutton
>, essa verrà effettuata da un processo asincrono esterno. Tutti gli elementi trovati appariranno nella vista chiamata <guilabel
>Grep</guilabel
>. Si può saltare direttamente all'elemento trovato facendo clic su di esso. Notare che grep scansiona i file come sono memorizzati nel file system. Se si hanno versioni modificate di questi file nel proprio editor si potrebbero ricevere errori nel numero di linea o alcuni elementi potrebbero non essere validi &mdash; si possono evitare questi problemi salvando anticipatamente tutti i file. </para>

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

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

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

<sect1 id="code-completion">
<title
>Completamento del codice</title>

<para
>(... da scrivere ...) </para>
</sect1
> <!-- code-completion -->

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

<sect1 id="newfiles">
<title
>Creare nuovi File e Classi</title>

<para
>(... da scrivere ...) </para>

<sect2 id="newfiles-edittemplates">
<title
>Modificare i modelli</title>

<para
>(... da scrivere ...) </para>
</sect2
> <!-- newfiles-edittemplates -->

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

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

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

<chapter id="file-browsers">
<title
>Il browser dei file</title>

<para
>&kdevelop; può visualizzare diversi tipi di liste ed alberi per la selezione dei file nella parte sinistra della finestra principale: </para>

<itemizedlist>
<listitem>
<formalpara>
<title
>Albero dei file</title>
<para
>Questo mostra una vista ad albero della gerarchia di file al di sotto della directory del progetto. Facendo clic su un file verrà caricato nell'editor. Per i file che non contengono testo KDevelop avvierà un'applicazione che può gestire il tipo MIME corrispondente. </para>
</formalpara>

<para
>L'albero dei file viene aggiornato regolarmente ogni volta che cambia qualcosa nel file system. Per esempio, se si creano nuovi file o directory (anche fuori da &kdevelop;), il cambiamento si riflette immediatamente nella lista dei file. Su Linux, questa funzione utilizza la libreria FAM. Su altri sistemi operativi o su NFS le directory visualizzate sono controllate periodicamente a brevi intervalli. </para>

<para
>L'albero dei file nasconde i file che normalmente non sono interessanti, come i file oggetto. In <guimenuitem
>Opzioni Progetto</guimenuitem
> nel menu <guibutton
>Gruppi di file</guibutton
> si possono configurare (come elenco di caratteri jolly separati da virgola) quali pattern devono essere usati per filtrare i file irrilevanti.  </para>

<para
>Inoltre si può decidere di limitare l'albero dei file per visualizzare solo i file che appartengono al progetto corrente. Questa modalità può essere cambiata facendo clic con il tasto destro del mouse sull'elemento radice dell'albero. </para>

<figure id="screenshot-filetree" float="1">
<title
>Uno screenshot dell'albero dei file</title>
<mediaobject>
<imageobject
><imagedata fileref="filetree.png"/></imageobject>
</mediaobject>
</figure>

</listitem>

<listitem>
<formalpara>
<title
>Gruppi di file</title>
<para
>Questo visualizza i file che appartengono al progetto, raggruppati per estensione. Come nell'albero di file, si può modificare un file facendo clic con il tasto sinistro del mouse. </para>
</formalpara>

<para
>I gruppi mostrati in questa visualizzazione possono essere configurati con <guibutton
>Gruppi di file</guibutton
> nella finestra di dialogo <guimenuitem
>Opzioni progetto...</guimenuitem
>. Per adattare la visualizzazione alle proprie esigenze, è utile capire come i file vengono distribuiti nei gruppi. Per ogni file &kdevelop; attraversa tutti i gruppi dall'alto al basso. Per ogni gruppo viene controllato se il file corrisponde ad uno schema. Se viene trovata una corrispondenza il file viene visualizzato in quel gruppo e viene interrotta l'iterazione. Questo spiega perché gli schemi più generali dovrebbero essere messi al di sotto di quelli più specifici: per esempio l'ultimo schema dovrebbe essere un asterisco per il gruppo <guilabel
>Altro</guilabel
>. </para>

</listitem>

</itemizedlist>

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

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

<chapter id="class-browsers">
<title
>Il browser delle classi</title>
<indexterm zone="class-browsers"
><primary
>browser delle classi</primary
></indexterm>

<para
>Quando si lavora ad un progetto con un linguaggio orientato agli oggetti, l'attenzione non è concentrata sui file sorgente e i loro nomi, ma sulle classi e le loro relazioni. Per aiutare a navigare lo spazio delle classi e dei simboli definiti, &kdevelop; include vari browser delle classi che visualizzano la struttura delle classi in varie modalità. </para>

<sect1 id="classview">
<title
>Vista delle classi</title>

<para
>Questa vista è mostrata nella parte sinistra della finestra principale e contiene un elenco lineare di tutte le classi, variabili e funzioni del progetto. È organizzata come una vista ad albero. Se si apre il nodo di una classe facendo clic viene visualizzata una lista di tutti i metodi e gli attributi di quella classe. </para>

<figure id="screenshot-classview" float="1">
<title
>Uno screenshot della vista delle classi</title>
<mediaobject>
<imageobject
><imagedata fileref="classview.png"/></imageobject>
</mediaobject>
</figure>

<para
>La vista delle classi funziona in due modalità differenti. Per default tutti i simboli sono raggruppati in <quote
>classi</quote
>, <quote
>strutture</quote
>, <quote
>funzioni</quote
>, <quote
>variabili</quote
> e <quote
>namespace</quote
>. Nel menu contestuale si può scegliere <guimenuitem
>List by Namespaces</guimenuitem
>. In questa modalità viene visualizzata la gerarchia dei namespace, con i simboli raggruppati nel namespace dove sono definiti. Può essere utile nei progetti che fanno grande uso di namespace (innestati), mentre è meno utile in progetti che non li usano. </para>

<para
>Si può anche cambiare il modo con cui vengono visualizzati i nomi delle classi. Normalmente sono mostrati senza il namespace in cui sono definiti. Questo implica che non si possono distinguere immediatamente classi che hanno lo stesso nome definite in namespace diversi. Se si rimane con il mouse per un po' sopra ad un elemento viene mostrato un aiuto che mostra l'intero percorso del nome. Si può decidere di visualizzare sempre il nome completo scegliendo <guimenuitem
>Full Identifier scopes</guimenuitem
> dal menu contestuale.  </para>

<para
>Facendo clic su una classe o su un metodo viene mostrata la definizione. Si può anche saltare alla dichiarazione di un metodo scegliendo <guimenuitem
>Vai alla dichiarazione</guimenuitem
> dal menu contestuale. In questo menu sono presenti anche le voci <guimenuitem
>Aggiungi metodo..</guimenuitem
> e <guimenuitem
>Aggiungi attributo...</guimenuitem
>, che aprono delle finestre di dialogo dove si possono generare nuove dichiarazioni di metodi e variabili senza implementazione. </para>

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

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

<sect1 id="classtools">
<title
>Strumenti per le classi</title>

<para
>La finestra di dialogo class tool è attivata facendo clic una classe con il tasto destro nella visuale delle classi e scegliendo <guimenuitem
>Class tool...</guimenuitem
>. </para>

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

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

<sect1 id="classhierarchy">
<title
>Gerarchia delle classi</title>

<para
>(... da scrivere ...) </para>

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

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

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

<chapter id="documentation">
<title
>Documentazione</title>

<para
>Sfortunatamente la documentazione fa parte delle questioni più trascurate; tuttavia una volta impostata e mantenuta, la documentazione interna ed esterna fornisce un'aiuto molto importante. </para>
<para
>La documentazione ha diversi aspetti. C'è <itemizedlist>
  <listitem
><para
><emphasis
>documentazione interna al progetto</emphasis
>, che consiste principalmente in <itemizedlist>
    <listitem
><para
><emphasis
>commenti</emphasis
> nei file header/sorgente </para
></listitem>
    <listitem
><para
><emphasis
>documentazione API interna</emphasis
> del proprio progetto generata da strumenti speciali come ad es. &doxygen; </para
></listitem>
  </itemizedlist>
  </para
></listitem>
  <listitem
><para
><emphasis
>documentazione esterna del progetto</emphasis
> che comprende <itemizedlist>
    <listitem
><para
><emphasis
>documentazione API esterna</emphasis
> ad es. di librerie di sistema (<application
>KDE</application
>, <application
>Qt</application
>, ecc.) </para
></listitem>
    <listitem
><para
>altra documentazione (manuali di programmazione, informazioni generali di sistema, articoli HowTo e simili) </para
></listitem>
  </itemizedlist>
  </para
></listitem>
</itemizedlist>
</para>
<para
>Tutta questa documentazione dovrebbe essere manutenibile e a portata di mano ogni volta che serve. &kdevelop; ha la soluzione proprio per questo. </para>

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

<sect1 id="docbrowser">
<title
>Il browser della documentazione</title>


<figure id="screenshot-doctreeview" float="1">
<title
>Uno screenshot dell'albero della documentazione</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
>Gestione avanzata della compilazione</title>
<indexterm zone="adv-build-management"
><primary
>&automake;</primary
></indexterm>

<sect1 id="buildconfigurations">
<title
>Configurazioni di compilazione multiple</title>
<indexterm zone="buildconfigurations"
><primary
>configurazioni di compilazione</primary
><secondary
>multiple</secondary
></indexterm>

<para
>(... da scrivere ...) </para>

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

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

<sect1 id="crosscompiling">
<title
>Cross compilazione</title>
<indexterm zone="crosscompiling"
><primary
>cross-compilazione</primary
></indexterm>
<indexterm zone="crosscompiling"
><primary
>compilare</primary
><secondary
>cross</secondary
></indexterm>
<indexterm zone="crosscompiling"
><primary
><option
>--host</option
></primary
></indexterm>

<para
>Quando si hanno a disposizione dei cross compilatori si possono compilare i programmi per processori e sistemi operativi diversi da quello in cui viene eseguito il compilatore e &kdevelop;. Il &GNU; compiler collection GCC può essere configurato e compilato come un cross compilatore. Consultare le <ulink url="info://gcc/Cross-Compiler"
>pagine info di GCC</ulink
> per maggiori informazioni. Alcune distribuzioni Linux forniscono anche pacchetti binari. </para>

<para
>Un pacchetto basato su automake può essere facilmente cross compilato passando l'opzione <option
>--host</option
> allo script configure e impostando le variabili d'ambiente <envar
>CC</envar
> e <envar
>CXX</envar
> sui relativi file binari dei cross compilatori. Spesso si desidera passare dalla versione cross compilata a quella compilata per il proprio sistema e viceversa. Per questo motivo è conveniente usare la capacità di &kdevelop; di creare configurazioni multiple di compilazione, come spiegato nel capitolo <xref linkend="buildconfigurations"/>. Una volta creata una nuova configurazione per la cross compilazione nella finestra di dialogo <menuchoice
><guimenu
>Progetto</guimenu
> <guimenuitem
>Opzioni progetto...</guimenuitem
></menuchoice
>, aggiungere l'opzione </para>

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

<para
>alle opzioni di configure. Il nome <replaceable
>piattaforma</replaceable
> è una ennupla nella forma </para>

<programlisting
>cpu-vendor-os</programlisting>
<para
>o</para>
<programlisting
>cpu-vendor-kernel-os</programlisting>

<para
>Si può usare la forma breve per molte combinazioni, per esempio <wordasword
>i386-linux</wordasword
> o <wordasword
>arm-elf</wordasword
>. </para>

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

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

<sect1 id="qtembedded">
<title
>Qt/Embedded</title>
<indexterm zone="qtembedded"
><primary
>embedded</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
>&qte; è una versione delle librerie &Qt; che nei sistemi Linux non usa il sistema X window, ma disegna direttamente sul framebuffer. Perciò è interessante per sistemi embedded che hanno strette restrizioni sull'uso della memoria di sistema. Le API sono pienamente compatibili con quelle della versione X11. </para>

<para
>Sviluppare applicazioni per &qte; con &kdevelop; non è molto diverso dallo sviluppo di un programma per la versione X11 di &Qt;. Di fatto, si può usare lo stesso codice per entrambe le versioni. Se si usa il gestore di progetti autoproject si può passare alla versione embedded passando allo script configure l'argomento <option
>--enable-embedded</option
>. Si può impostare questo in <guilabel
>Opzioni di configurazione</guilabel
> nella finestra di dialogo <menuchoice
><guimenu
>Progetto</guimenu
> <guimenuitem
>Opzioni progetto...</guimenuitem
></menuchoice
>. Con l'opzione <option
>--with-qt-dir=DIR</option
> si può impostare la directory in cui è installata la libreria &qte;. </para>

<para
>Dopo aver configurato e compilato la propria applicazione con queste opzioni, verrà eseguito il link con la libreria <filename
>libqpe.so</filename
>. Questa versione dell'applicazione normalmente non funzionerà quando si usa X11: per testarla avviarla sotto il controllo dell'applicazione <application
>qvfb</application
> (Qt Virtual Frame Buffer). Questo viene fatto avviando <application
>qvfb</application
> ed eseguendo l'applicazione con  </para>

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

<para
>Naturalmente si vorrà usare una versione funzionante della propria applicazione sul processore di destinazione. Probabilmente sarà utile creare configurazioni multiple di compilazione, come spiegato prima, in modo da passare velocemente tra la versione eseguita nel proprio sistema di sviluppo e la versione eseguita sul sistema di destinazione. </para>

<para
>Normalmente le applicazioni per &qte; vengono eseguite come applicazioni singole nei dispositivi per i quali sono state progettate. Trolltech supporta anche Qtopia, che è una collezione di applicazioni per PIM, come browser e altri che funzionano assieme in maniera consistente. Ad esempio è un ambiente standard dello Sharp Zaurus. Si possono scrivere applicazioni che si integrano in questo ambiente usando l'SDK di Qtopia, rendendo la classe della propria applicazione una sottoclasse di <classname
>QPEApplication</classname
> ed effettuando il link alle librerie <filename
>libqpe.so</filename
>. Se si sviluppa l'applicazione con il gestore di progetti autoproject si deve aggiungere <option
>--enable-qtopia</option
> agli argomenti di configure. </para>

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

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

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

<chapter id="debugger">
<title
>L'interfaccia del debugger</title>
<indexterm zone="debugger"
><primary
>debugger</primary
></indexterm>

<para
>Per i linguaggi C e C++, &kdevelop; contiene un debugger interno che è direttamente integrato nell'editor. Tecnicamente è implementato come un frontend che usa <application
>gdb</application
> (portable &GNU; debugger) attraverso una pipe. Il debugger può essere avviato in diversi modi: </para>

<itemizedlist>
<listitem>
<para
>Con <menuchoice
><guimenu
>Debug</guimenu
><guimenuitem
>Avvia</guimenuitem
></menuchoice
>,viene caricato dentro il debugger il programma principale del proprio progetto.  </para>
</listitem>

<listitem>
<para
>Usando <menuchoice
><guimenu
>Debug</guimenu
><guimenuitem
>Esamina il file core</guimenuitem
></menuchoice
> viene caricato in memoria un file core che è stato generato dal kernel del sistema operativo quando il programma è andato in crash (la generazione di file core potrebbe essere disattivata sul proprio sistema, vedere <application
>ulimit(1)</application
>). Questo è utile per un'analisi post-mortem del programma. </para>
</listitem>

<listitem>
<para
>Con <menuchoice
><guimenu
>Debug</guimenu
><guimenuitem
>Allega al processo</guimenuitem
></menuchoice
> si usa il debugger su un programma già in esecuzione. Verrà mostrata una lista di processi da dove si può selezionare quello che dovrà essere supervisionato dal debugger. </para>
</listitem>

<listitem>
<para
>Notare che questo debug è possibile se il proprio progetto è stato compilato con l'attivazione delle informazioni di debug. Possono essere attivate nella finestra di dialogo <guibutton
>Opzioni compilatore</guibutton
>. Quando questa opzione è attivata il compilatore genera dati aggiuntivi che permettono al debugger di associare i nomi dei file e numeri di linea con gli indirizzi nel file eseguibile. </para>
</listitem>
</itemizedlist>

<para
>Il frontend del debugger fornisce diverse viste <quote
>nel</quote
> processo:  </para>

<itemizedlist>
<listitem>
<formalpara>
<title
>Variabili</title>
<indexterm zone="debugger"
><primary
>variabili di osservazione</primary
></indexterm>
<para
>Questa finestra elenca i valori di tutte le variabili locali del punto corrente dell'esecuzione del programma. Esso include le variabili dell'intero stack delle chiamate, cioè la funzione dove è stato interrotto il processo, la funzione che ha chiamato quella funzione e così via fino a <function
>main()</function
>. </para>
</formalpara>

<para
>Un altro ramo di variabili contiene le variabili di osservazione. Si possono configurare quali variabili mostrare qui. Possono essere osservate sia le variabili locali che globali. Si possono aggiungere variabili facendo clic sul pulsante <guibutton
>Aggiungi</guibutton
> o premendo <keycap
>RETURN</keycap
> mentre è selezionata la voce <guilabel
>Espressione da controllare</guilabel
>. Possono essere rimosse nuovamente attraverso il menu contestuale. </para>
</listitem>

<listitem>
<formalpara>
<title
>Breakpoint</title>
<indexterm zone="debugger"
><primary
>breakpoint</primary
></indexterm>
<para
>(... da scrivere ...) </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Stack del frame</title>
<indexterm zone="debugger"
><primary
>stack del frame</primary
></indexterm>
<para
>(... da scrivere ...) </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Disassemblare</title>
<indexterm zone="debugger"
><primary
>disassemblare</primary
></indexterm>
<para
>(... da scrivere ...) </para>
</formalpara>
</listitem>

</itemizedlist>


<sect1 id="settingbreakpoints">
<title
>Impostare i breakpoint</title>

<para
>(... da scrivere ...) </para>

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

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

<sect1 id ="debuggeroptions">
<title
>Opzioni</title>

<formalpara>
<title
>Visualizzare nomi mangled (storpiati)</title>
<indexterm zone="debugger"
><primary
>mangling dei nomi</primary
></indexterm>
<indexterm zone="debugger"
><primary
>mangling</primary
><secondary
>nome</secondary
></indexterm>

<para
>Nel C++, i nomi delle funzioni negli eseguibili sono detti <quote
>mangled</quote
> (storpiati), cioè il nome della funzione include le informazioni sul tipo degli argomenti. Questo è necessario per il supporto al sovraccaricamento delle funzioni. L'algoritmo di mangling non è standardizzato e differisce persino tra versioni diverse del compilatore C++ &GNU; </para>
</formalpara>

<para
>Normalmente nella finestra di disassemblaggio vengono visualizzati nomi non mangled, quindi le firme delle funzioni sono simili a come appaiono nel codice sorgente, quindi facilmente leggibili. In alternativa si può decidere di vedere i nomi mangled. </para>

<formalpara>
<title
>Tentare di impostare i breakpoint al caricamento delle librerie</title>
<indexterm zone="debugger"
><primary
>lazy breakpoint</primary
></indexterm>
<indexterm zone="debugger"
><primary
>breakpoint</primary
><secondary
>lazy</secondary
></indexterm>

<para
>Il backend del debugger <application
>gdb</application
> non permette di inserire breakpoint all'interno di codice non caricato. Questo potrebbe essere sconveniente in una applicazione altamente modulare, dove spesso il codice viene caricato su richiesta come un plugin (usando la funzione di libc <function
>dlopen(3)</function
>), quindi &kdevelop; ha esteso il proprio supporto per i breakpoint nelle librerie condivise. Se si imposta questa opzione si potranno impostare i breakpoint in librerie che non sono state caricate. Quando <application
>gdb</application
> notificherà che una libreria è stata caricata, &kdevelop; tenterà di impostare i breakpoint sospesi. </para>
</formalpara>

<formalpara>
<title
>Abilitare la barra degli strumenti fluttuante</title>
<indexterm zone="debugger"
><primary
>barra strumenti debug</primary
></indexterm>
<indexterm zone="debugger"
><primary
>barra degli strumenti</primary
><secondary
>debugger</secondary
></indexterm>

<para
>(... da scrivere ...) </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
>Usare CVS</title>
<indexterm zone="cvs"
><primary
>CVS</primary
></indexterm>
<indexterm zone="cvs"
><primary
>controllo delle versioni</primary
></indexterm>

<sect1 id="cvs-basics">
<title
>Fondamenti di &CVS;</title>

<para
>&CVS; è il sistema di controllo delle modifiche che viene usato in molti progetti open source &mdash; incluso &kde;. Esso conserva tutti i sorgenti in una locazione centrale, chiamata <emphasis
>deposito (repository)</emphasis
>. Dal deposito, gli sviluppatori possono controllare la versione corrente del progetto o gli snapshot di un qualunque istante di tempo. A differenza di altri sistemi di controllo delle modifiche, non è necessario <emphasis
>fare il lock</emphasis
> dei file su cui si vuole lavorare. In questo modo lo sviluppo può essere altamente parallelizzato. </para>

<para
>Quando uno sviluppatore ha finito un compito, <emphasis
>effettua il commit</emphasis
> del suo codice (accompagnato da un messaggio di log). &CVS; si occupa della fusione dei cambiamenti fatti dai diversi sviluppatori. Ovviamente può succedere che più sviluppatori lavorino sullo stesso pezzo di codice; potrebbe risultare una serie di cambiamenti in conflitto tra loro (in pratica questo accade raramente, ed è spesso un segno di una carenza di comunicazione). In questo caso &CVS; rifiuta le modifiche; si potrà fare il commit di un file solo dopo che saranno risolti tutti i conflitti. </para>

<para
>Finora si sono descritte le caratteristiche di base di &CVS; che compaiono normalmente, ma &CVS; ne fornisce molte di più: si possono mantenere diversi rami di un progetto (ad es. &kde; 1.1.2 e &kde; 2 erano rami dell'albero di sviluppo di &kde;), unire i cambiamenti di un ramo con un altro, chiedere le differenze tra le revisioni, la storia delle revisioni di file ecc. </para>

<para
>&CVS; è implementato come un sistema client-server. Come utente, tutta la comunicazione con il deposito viene effettuata attraverso il programma a linea di comando &cvs;. É disponibile un livello più alto di interfaccia utente attraverso frontend come <application
>Cervisia</application
> (<ulink url="http://cervisia.sf.net"
></ulink
>) o <application
>TkCVS</application
> (<ulink url="http://tkcvs.sf.net"
></ulink
>). In &kdevelop; può essere usata direttamente solo una piccola parte delle funzionalità di &cvs; che sono importanti per il lavoro quotidiano.  </para>

<para
>Viene supposta una conoscenza di base dell'uso di &CVS;. In particolare, si dovrebbe sapere come controllare un dato progetto nel deposito. Viene raccomandato il libro <citetitle pubwork="book"
>Open Source Development With CVS</citetitle
> di Karl Fogel che è distribuito liberamente (tranne i capitoli non-tecnici). Vedere <ulink url="http://cvsbook.red-bean.com/cvsbook.html"
></ulink
>. </para>

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

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

<sect1 id="cvs-commands">
<title
>Comandi &CVS; in &kdevelop;</title>

<para
>Nella vista dei file, sono disponibili le seguenti voci del menu contestuale: </para>

<itemizedlist>

<listitem>
<formalpara>
<title
>Aggiungi al deposito</title>
<para
>Predispone i file contrassegnati per l'aggiunta al deposito. Il file viene trasferito al deposito quando si effettua il commit del file (o della directory che lo contiene) la volta successiva. </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Rimuovi dal deposito</title>
<para
>Predispone un file per la rimozione dal deposito. Questo cancella il file anche nel file system locale, quindi usare questa funzione con prudenza!  </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Aggiorna</title>
<para
>Esegue il comando <command
>cvs update</command
> per fondere tutti i cambiamenti degli altri utenti nella directory di lavoro. Quando si usa questa voce di menu su una directory normalmente viene fatto l'aggiornamento ricorsivamente, tranne il caso in cui questa opzione sia stata disabilitata nel file di configurazione <filename
>.cvsrc</filename
>. </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Commit</title>
<para
>Esegue il comando <command
>cvs commit</command
> per inviare tutte le modifiche locali al deposito. Notare che si dovrebbe fare l'aggiornamento prima di dare questo comando, altrimenti nel caso che un altro utente abbia inviato nel frattempo le proprie modifiche &CVS; potrebbe dare un messaggio di errore.  </para>
</formalpara>
</listitem>

</itemizedlist>

<para
>Tutti questi comandi sono eseguiti da &kdevelop; come sottoprocessi senza nessuna opzione a linea di comando o variabile d'ambiente. Questo potrebbe costituire un problema se ci si connette con il server &CVS; attraverso una connessione &ssh; che richiede l'inserimento di una password ogni volta che viene effettuato l'invio o l'aggiornamento. Ad esempio questo è necessario quando il proprio progetto è ospitato su <filename
>sourceforge.net</filename
>. Nella CVS/SSH FAQ che si può trovare nella documentazione di SourceForge sono descritte le soluzioni a questo problema. </para>

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

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

<sect1 id="cvs-behind">
<title
>Dietro le quinte</title>

<sect2 id="cvs-behind-workdir">
<title
>Cosa registra &CVS; nella directory di lavoro</title>

<para
>(... da scrivere ...) </para>
</sect2
> <!-- cvs-behind-workdir -->

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

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

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

<chapter id="external-progs">
<title
>Programmi esterni</title>
<indexterm zone="external-progs"
><primary
>programmi</primary
><secondary
>esterni</secondary
></indexterm>

<para
>Sebbene &kdevelop; sia un cosiddetto ambiente di sviluppo <quote
>integrato</quote
>, non potrà mai contenere tutte le funzioni che si vorrebbero usare, e le capacità del suo editor non saranno mai sufficienti per eseguire tutti i compiti di elaborazione di testo che vengono spesso compiuti. Come ogni autentico programma &UNIX;, &kdevelop; contiene diverse possibilità di eseguire programmi esterni, plugin esterni necessari per lavorare con i file o filtri esterni per elaborare i contenuti dell'editor. </para>

<para
>Una delle caratteristiche più generali e semplici è il menu degli strumenti, che si può configurare liberamente. Questo può essere fatto nella finestra di dialogo <menuchoice
><guimenu
>Impostazioni</guimenu
><guimenuitem
>Configura KDevelop...</guimenuitem
></menuchoice
>.in <guibutton
>Strumenti esterni</guibutton
>. </para>

<para
>Gli altri strumenti saranno discussi nel capitolo <xref linkend="plugin-tools"/>. </para>

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


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

<chapter id="credits">
<title
>Riconoscimenti</title>

<sect1 id="credits-contributions">
<title
>Contributi</title>

<para>
<itemizedlist>
  <listitem
><para
>La stesura iniziale di questo manuale è stato scritto da Bernd Gehrmann <email
>bernd@kdevelop.org</email
> e Caleb Tennis <email
>caleb@aei-tech.com</email
>. </para
></listitem>
  <listitem
><para
>I capitoli <link linkend="automake-manager-summary"
>Sommario sul gestore Automake</link
> e <link linkend="automake-manager-operation"
>Operazioni del gestore Automake</link
> sono stati scritti da 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
>Scorciatoie</title>

<para
>(... da scrivere ...) </para>

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

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

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

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

<appendix id="plugin-tools">
<title
>Plugin</title>

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

<para
>&kdevelop; contiene un grande numero di piccoli strumenti che aiutano ad eseguire alcuni compiti. La maggior parte di essi è realizzata come plugin. Questo significa che se uno di essi non piace può essere semplicemente disattivato nella finestra di dialogo <guimenuitem
>Opzioni progetto...</guimenuitem
> in <guibutton
>Plugins</guibutton
> (per i plugin generali) o in <menuchoice
><guimenu
>Impostazioni</guimenu
><guimenuitem
>Configura KDevelop...</guimenuitem
></menuchoice
>.I plugin che sono stati disattivati non disturbano i menu e non sono caricati in memoria. </para>

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

<para
>Questo plugin espande le abbreviazioni in frammenti di codice molto usati. Si attiva premendo <keycombo
><keycap
>Ctrl</keycap
><keycap
>Spazio</keycap
></keycombo
>. Per esempio, se si inserisce nell'editor <literal
>"ife"</literal
> in un file C++ e si preme <keycombo
><keycap
>Ctrl</keycap
><keycap
>Spazio</keycap
></keycombo
>, si ottiene un modello di codice <literal
>if-else</literal
> e si risparmia qualche battitura di tasti. L'insieme delle abbreviazioni supportate dipende dal linguaggio di programmazione del file che viene modificato. Per esempio, per PHP si sarà ovviamente interessati ad altri modelli di codice rispetto a quelli di &Java;. </para>
</formalpara>

<para
>L'insieme dei modelli di codice è configurabile. Si possono vedere quelli disponibili in <menuchoice
><guimenu
>Impostazioni</guimenu
><guimenuitem
>Configura KDevelop...</guimenuitem
></menuchoice
> in <guibutton
>Abbreviazioni</guibutton
> </para>
</listitem>

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

<para
>Questo plugin fornisce due funzioni. Se si seleziona <menuchoice
><guimenu
>Strumenti</guimenu
> <guimenuitem
>Esegui comando...</guimenuitem
></menuchoice
>, si può inserire un comando di shell. L'output del comando è inserito nel buffer dell'editor quando si preme il pulsante <guibutton
>Avvia</guibutton
>. </para>
</formalpara>

<para
>La funzione relativa è disponibile in <menuchoice
><guimenu
>Strumenti</guimenu
><guimenuitem
>Selezione filtro tramite comando...</guimenuitem
></menuchoice
>. Per usarla, si deve selezionare un'area di testo nell'editor. Se si inserisce un comando e si preme il pulsante <guibutton
>Avvia</guibutton
> esso verrà avviato e verrà usata la selezione come input. Lo standard output del comando viene quindi inserito nell'editor. </para>
</listitem>

<listitem>
<formalpara>
<title
>Il plugin &doxygen;</title>
<indexterm zone="plugin-tools"
><primary
>&doxygen;</primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>strumenti di documentazione</primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>documentazione API</primary
></indexterm>

<para
>Questo plugin aiuta ad usare lo strumento di documentazione API &doxygen; (<ulink url="http://www.doxygen.org"
></ulink
>). Si può selezionare <menuchoice
><guimenu
>Project</guimenu
><guimenuitem
>Run Doxygen</guimenuitem
></menuchoice
> per generare la documentazione API per il progetto corrente, in base alla configurazione del file <filename
>Doxyfile</filename
> della directory del progetto. </para>
</formalpara>

<para
>Inoltre si può configurare &doxygen; nella finestra di dialogo <menuchoice
><guimenu
>Progetto</guimenu
><guimenuitem
>Opzioni progetto...</guimenuitem
></menuchoice
>. Questa finestra di dialogo è molto simile alla procedura guidata &doxygen;. </para>
</listitem>

<listitem>
<formalpara>
<title
>Il plugin &ctags;</title>
<indexterm zone="plugin-tools"
><primary
>&ctags;</primary
></indexterm>

<para
>Sebbene il browser delle classi fornisca una vasta scelta di simboli e di classi del progetto, si potrebbe voler usare lo strumento ctags. In particolare esso supporta molti più linguaggi del browser delle classi.  </para>
</formalpara>

<para
>Si attiva questo plugin in <menuchoice
><guimenu
>Strumenti</guimenu
><guimenuitem
>CTags...</guimenuitem
></menuchoice
>. Al primo avvioverrà chiesto di generare un database di ricerca. Quando si accetta verrà avviato il programma &ctags; che creerà un file chiamato <filename
>tags</filename
> nella directory del progetto. Questo è un file di testo contenente tutti i simboli del file sorgente. </para>

<para
>Ci sono due modi per fare ricerche nel database di simboli: quando è selezionata la casella <guilabel
>Corrisp. espress. regolare</guilabel
> il testo inserito sarà interpretato come espressione regolare (tipo POSIX) e confrontato con i simboli esistenti. Per esempio con il testo <literal
>.*Widget</literal
> verranno cercati tutti i simboli che finiscono con <literal
>Widget</literal
>. Se la casella non è selezionata la ricerca sarà fatta in modo letterale. </para>

<para
>Quando viene fatta una ricerca si riceverà una lista di simboli corrispondenti accompagnati dal numero di linea del punto dove sono definiti. Facendo clic sulla lista si passerà al punto relativo. </para>

<para
>Per alcuni linguaggi &ctags; distinguerà diversi tipi di simboli. Per esempio Python ha classi e funzioni. Si possono cercare selettivamente solo le classi selezionando il tipo relativo nella finestra di dialogo.  </para>

<para
>Normalmente il database dei simboli non viene aggiornato quando si modificano i file sorgente. Di conseguenza dopo un po' i numeri di linea non saranno più corretti e mancheranno le nuove classi e funzioni. Perciò si dovrebbe aggiornare il file <filename
>tags</filename
> ad intervalli regolari premendo il pulsante <guibutton
>Rigenerare</guibutton
>. </para>
</listitem>

<listitem>
<formalpara>
<title
>Il plugin <command
>astyle</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>astyle</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
><application
>Artistic Style</application
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>indentazione</primary
></indexterm>

<para
>(... da scrivere ...) </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Il plugin <command
>regexptest</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>regexptest</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>debugging</primary
><secondary
>espressioni regolari</secondary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>espressioni regolari</primary
><secondary
>debugging</secondary
></indexterm>

<para
>La progettazione con le espressioni regolari può diventare un lavoro pesante. Spesso al primo tentativo l'espressione corrisponde a troppe stringhe. In particolare, quando si lavora con un linguaggio compilato, i tempi di debug di una espressione regolare possono essere scomodi. Il plugin regexptest permette di esplorare direttamente i cambiamenti in una espressione regolare. Viene attivato con <menuchoice
><guimenu
>Strumenti</guimenu
> <guimenuitem
>Debug dell'espressione regolare</guimenuitem
></menuchoice
>. </para>
</formalpara>

<para
>Nelle caselle si può scegliere il tipo di motore di espressioni regolari da usare. Attualmente sono supportati il tipo definito dallo standard POSIX, usato dal programma &grep;, e la sintassi POSIX estesa usata dal programma &egrep;.  </para>

<para
>Quando si inserisce un'espressione si riceverà un feedback immediato su ogni errore di sintassi. Inserendo un testo in <guilabel
>Test stringa</guilabel
>,si può vedere se l'espressione corrisponde alla stringa. In particolare, se l'espressione regolare include gruppi come <literal
>([a-z])</literal
>,viene visualizzato il contenuto del sottogruppo corrispondente in un elenco. </para>
</listitem>

<listitem>
<formalpara>
<title
>Il plugin <command
>konsole</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>konsole</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>terminale</primary
><secondary
>embedded</secondary
></indexterm>

<para
>(... da scrivere ...) </para>
</formalpara>
</listitem>

</itemizedlist>

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

<sect1 id="parts-survey">
<title
>Panoramica</title>

<para
>&kdevelop; fornisce moduli estensibili o componenti, da caricare su richiesta al runtime. Questo permette agli sviluppatori di attivare solo le funzioni necessarie o desiderate per lo sviluppo. </para>

<para
>Alcuni componenti sono considerati <link linkend="table-global-parts"
>globali</link
> &mdash; vale a dire che influenzano le operazioni di &kdevelop;. Per esempio, uimode permette ad uno sviluppatore di selezionare quale interfaccia grafica usare.  </para>

<para
>Altri componenti sono <link linkend="table-project-parts"
>specifici del progetto</link
>, e sono utilizzati solo quando un progetto di quel tipo viene caricato. Ad esempio il gestore automake necessita di essere attivo quando viene caricato un progetto basato su automake, altrimenti questo componente non è attivo. </para>

<para
>I componenti attivi possono avere molti effetti su &kdevelop;. A seconda della loro funzione possono aggiungere menu extra, voci extra di menu, pulsanti degli strumenti extra, ecc.  </para>

<table id="table-project-parts">
<title
>Componenti di gestione del progetto in &kdevelop;</title>

<tgroup cols="2"
><tbody>
<row>
  <entry
>antproject</entry>
  <entry
>ANT Project Manager (applicazioni &Java;)</entry>
</row>
<row>
  <entry
>autoproject</entry>
  <entry
>Gestore di progetti automake</entry>
</row>
<row>
  <entry
>customproject</entry>
  <entry
>Gestore di progetti personalizzati</entry>
</row>
<row>
  <entry
>trollproject</entry>
  <entry
>Gestore di progetti basati su QMake</entry>
</row>
</tbody
></tgroup>
</table>

<table id="table-global-parts">
<title
>Componenti globali in &kdevelop;</title>

<tgroup cols="2"
><tbody>
<row
><entry
>Nome del componente</entry
><entry
>Descrizione</entry
></row>
<row
><entry
>procedura guidata per le applicazioni</entry
><entry
>Procedura guidata Nuovo Progetto</entry
></row>
<row
><entry
>storia</entry
><entry
></entry
></row>
<row
><entry
>konsole</entry
><entry
>Konsole incorporata</entry
></row>
<row
><entry
>editor-chooser</entry
><entry
>Sceglie un editor di testo interno</entry
></row>
<row
><entry
>doctreeview</entry
><entry
>Visualizzatore di documentazione</entry
></row>
<row
><entry
>openwith</entry
><entry
></entry
></row>
<row
><entry
>fileselector</entry
><entry
>Un widget di selezione dei file</entry
></row>
<row
><entry
>uimode</entry
><entry
>Personalizza la modalità dell'interfaccia</entry
></row>
<row
><entry
>texttools</entry
><entry
>Strumenti di testo aggiuntivi</entry
></row>
<row
><entry
>tipofday</entry
><entry
>Suggerimenti del giorno</entry
></row>
<row
><entry
>grepview</entry
><entry
>Una versione grafica dell'utility grep</entry
></row>
<row
><entry
>cvs</entry
><entry
>Supporto per il CVS</entry
></row>
<row
><entry
>strumenti</entry
><entry
></entry
></row>
<row
><entry
>regexptest</entry
><entry
>Verifica le espressioni regolari</entry
></row>
<row
><entry
>abbrev</entry
><entry
>Espansore di abbreviazioni</entry
></row>
<row
><entry
>filter</entry
><entry
></entry
></row>
<row
><entry
>valgrind</entry
><entry
>Un frontend grafico per valgrind</entry
></row>
</tbody
></tgroup>
</table>

<table>
<title
>Componenti di supporto per il linguaggio in &kdevelop;</title>
<tgroup cols="2">
<tbody>
<row
><entry
>cppsupport</entry
><entry
>Supporto per C/C++</entry
></row>
<row
><entry
>fortransupport</entry
><entry
>Supporto per Fortran</entry
></row>
<row
><entry
>javasupport</entry
><entry
>Supporto per &Java;</entry
></row>
<row
><entry
>perlsupport</entry
><entry
>Supporto per Perl</entry
></row>
<row
><entry
>phpsupport</entry
><entry
>Supporto per PHP</entry
></row>
<row
><entry
>pythonsupport</entry
><entry
>Supporto per Python</entry
></row>
</tbody
></tgroup>
</table>

<table>
<title
>Componenti specifici del progetto in &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
>Classview Manager</entry
></row>
<row
><entry
>ctags</entry
><entry
></entry
></row>
<row
><entry
>debugger</entry
><entry
>Gestore del debugger &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
>Esempi delle modalità dell'interfaccia utente di &kdevelop;</title>

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

<para
>Cliccare <link linkend="uimodes-survey"
>qui</link
> per ritornare alla panoramica delle modalità. </para>

<screenshot>
  <mediaobject>
    <imageobject>
      <imagedata fileref="kdevelop-ideal-mode.png" format="PNG"/>
    </imageobject>
    <textobject
><phrase
>Screenshot</phrase
></textobject>
    <caption
><para
>Modalità IDEAl di &kdevelop;</para
></caption>
  </mediaobject>
</screenshot>

<para
>Cliccare <link linkend="uimodes-survey"
>qui</link
> per ritornare alla panoramica delle modalità. </para>

<screenshot>
  <mediaobject>
    <imageobject>
      <imagedata fileref="kdevelop-ideal-mode-0.png" format="PNG"/>
    </imageobject>
    <textobject
><phrase
>Screenshot</phrase
></textobject>
    <caption
><para
>Modalità IDEAl di &kdevelop; con le linguette chiuse</para
></caption>
  </mediaobject>
</screenshot>

<para
>Questo screenshot di esempio illustra uno dei principali vantaggi della modalità IDEAl: rende disponibile una grande area di lavoro. Tutte le viste degli strumenti sono disponibili facendo clic sulla linguetta corrispondente. </para>
<para
>Probabilmente servirà un po' di tempo per prendere confidenza con le icone nella barra delle linguette. Se si è disorientati si può posizionare il mouse su una linguetta e aspettare alcuni secondi: apparirà una descrizione di aiuto. In questo screenshot viene mostrato l'aiuto corrispondente al <quote
>Gestore Automake</quote
>, che descrive la linguetta inferiore della barra destra. </para>

<para
>Cliccare <link linkend="uimodes-survey"
>qui</link
> per ritornare alla panoramica delle modalità. </para>

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

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

<sect1 id="mdi-desc">
<title
>Modalità finestre childframe</title>

<para
>Cliccare <link linkend="uimodes-survey"
>qui</link
> per ritornare alla panoramica delle modalità. </para>

<screenshot>
  <mediaobject>
    <imageobject>
    <imagedata fileref="kdevelop-mdi-mode.png" format="PNG"/>
    </imageobject>
    <textobject
><phrase
>Screenshot</phrase
></textobject>
    <caption
><para
>Modalità finestre childframe di &kdevelop;</para
></caption>
  </mediaobject>
</screenshot>

<para
>Cliccare <link linkend="uimodes-survey"
>qui</link
> per ritornare alla panoramica delle modalità. </para>

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

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

<sect1 id="tabbed-desc">
<title
>Modalità a schedario</title>

<para
>Cliccare <link linkend="uimodes-survey"
>qui</link
> per ritornare alla panoramica delle modalità. </para>

<screenshot>
  <mediaobject>
    <imageobject>
      <imagedata fileref="kdevelop-tabbed-mode.png" format="PNG"/>
    </imageobject>
    <textobject
><phrase
>Screenshot</phrase
></textobject>
    <caption
><para
>Modalità a schedario di &kdevelop;</para
></caption>
  </mediaobject>
</screenshot>

<para
>Cliccare <link linkend="uimodes-survey"
>qui</link
> per ritornare alla panoramica delle modalità. </para>

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

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

<sect1 id="toplevel-desc">
<title
>Modalità finestra toplevel</title>

<para
>Cliccare <link linkend="uimodes-survey"
>qui</link
> per ritornare alla panoramica delle modalità. </para>

<screenshot>
  <mediaobject>
    <imageobject>
      <imagedata fileref="kdevelop-toplevel-mode.png" format="PNG"/>
    </imageobject>
    <textobject
><phrase
>Screenshot</phrase
></textobject>
    <caption
><para
>Modalità finestra toplevel di &kdevelop;</para
></caption>
  </mediaobject>
</screenshot>

<para
>Cliccare <link linkend="uimodes-survey"
>qui</link
> per ritornare alla panoramica delle modalità. </para>

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

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

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

<appendix id="app-misc-info">
<title
>Ulteriori informazioni</title>
<sect1 id="gettinginformation">
<title
>Ricevere Informazioni</title>
<para
>(... da scrivere ...) </para>
</sect1
> <!-- gettinginformation -->

<sect1 id="app-reporting-bugs">
<title
>Segnalazioni di bug</title>
<para
>(... da scrivere ...) </para>
</sect1
> <!-- app-reporting-bugs -->

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

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

<appendix id="app-changelog">
<title
>Cambiamenti</title>
<sect1 id="changes">
<title
>Cambiamenti a questo documento</title>
<para>
<itemizedlist>
<listitem
><para
>2003-01-03 &mdash; Inizio di questo 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
>(... da scrivere ...)</para>

<bibliography>

<biblioentry>
<title
><ulink url="info://make/Top"
>GNU Make Manual</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"
>Using the GNU Compiler 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, and 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
>Advanced Programming in the &UNIX; Environment</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>
