# Estendere &quantaplus;

Questo capitolo descrive come personalizzare &quantaplus; per i tuoi particolari bisogni e come puoi aiutare &quantaplus; a diventare migliore.

## Pacchetto di Editing del Tipo di Documento (&DTEP;)

I Pacchetti di Editing del Tipo di Documento (&DTEP;) vengono utilizzati in &quantaplus; per aggiungere il supporto per il markup, i linguaggi di scripting e &CSS;. Permettono a &quantaplus; di fornire funzionalità quali l'auto-completamento e gli alberi di nodi. La loro semplicità e flessibilità sono quello che rende &quantaplus; un &IDE; veloce, amichevole agli sviluppatori web. Sono quello che rende &quantaplus; un ambiente semplice da usare e produttivo.

I &DTEP; sono di due tipi, Famiglia 1, per il markup e Famiglia 2 per lo scripting ed il &CSS;. I &DTEP; sono costituiti da due parti, la Cartella dei Tag e le Barre degli strumenti. Le Cartelle dei Tag sono composte da due tipi di file, i file &descriptionrc; ed i file TagXML, che hanno l'estensione .tag. Le barre degli strumenti sono barre di pulsanti maneggevoli, costituite da icone (poste al di sopra della finestra di editing) che inseriscono il testo nel documento più velocemente di quanto un utente possa scrivere.

I &DTEP; possono essere creati manualmente (guarda più avanti), scaricati o creati automaticamente da DTD esistenti. Guarda converting-dtd per i dettagli sulla conversione.

Questo documento descrive come creare i file TagXML, il file &descriptionrc; e le barre degli strumenti. In breve, un &DTEP;.

I file TagXML (.tag) definiscono sia gli attributi specifici di un tag che la disposizione ed il contenuto della finestra di dialogo delle proprietà che &quantaplus; visualizza per il tag. Il file &descriptionrc; fornisce le regole e le informazioni del &DTEP; stesso. Le barre degli strumenti forniscono un mezzo veloce per aggiungere dei tag in un documento senza preoccuparsi di errori di ortografia e simili.

### Impacchettare

Le Cartelle dei Tag sono proprio questo, cartelle. Sono costituite solamente dai file &descriptionrc; e TagXML. Le Cartelle dei Tag portano il nome del linguaggio di markup e la sua versione, se applicabile. (Per esempio, html-4.01-strict)

### TagXML

La tabella sottostante elenca gli elementi definiti in TagXML e dichiara se sono fondamentali o meno. Anche se non tutti sono fondamentali, ti raccomandiamo di utilizzarne quanti più ne puoi così che gli altri utenti possano avere un'esperienza migliore e maggiori informazioni con cui lavorare.

Elemento | Utilizzo Predefinito | Tipologia di Utilizzo
TAGS | fondamentale | sempre
tag | fondamentale | sempre
label | opzionale | fondamentale per creare una finestra di dialogo delle proprietà
attr | opzionale | fondamentale per definire un attributo
tooltip | opzionale | fondamentale per far sì che la finestra di dialogo delle proprietà visualizzi un suggerimento
whatsthis | opzionale | fondamentale per far sì che la finestra di dialogo delle proprietà visualizzi un Che cos'è
list | opzionale | fondamentale quando un attributo è del tipo list
item | opzionale | fondamentale quando viene utilizzato <list >
textlocation | opzionale | sempre
location | opzionale | fondamentale quando viene utilizzata un'etichetta
text | opzionale | fondamentale quando viene utilizzata un'etichetta
children | opzionale | elenco dei tag che appaiono all'interno dei tag che si stanno definendo
child | fondamentale | un elemento figlio
stoppingtags | opzionale | elenco dei tag che dicono ad un altro tag di terminare
stoppingtag | fondamentale | una voce stoppingtags

#### Descrizione degli Elementi TagXML

La prossima sezione descriverà, nel dettaglio, ogni elemento. Tutto a partire da dove possono essere utilizzati a ciò che va inserito al loro interno verrà analizzato in una maniera semplice da seguire.

##### TAGS

Questo è l'elemento radice di ogni documento TagXML. Può apparire in un documento una sola volta. Può contenere la definizione di diversi tag. È un tipo di elemento solo-elemento.

Genitore(i) | Figli
NESSUNO | tag

##### tag

Contenitore per il tag che si sta definendo. Questo è un elemento di tipo solo-elemento.

Genitore(i) | Figli
TAGS | label, attr, stoppingtags

Attributo | Type | Valori | Predefinito | Uso | Descrizione
name | string |  |  | fondamentale | Specifica il nome del tag da definire.
single | boolean |  |  | opzionale | Specifica se il tag richiede o meno un tag di chiusura </(nometag) >.
type | string |  | xmltag | opzionale | Specifica il tipo di tag che si sta definendo.
|  | xmltag |  |  | Il tipo di tag è basato su XML. (Solamente Famiglia 1.)
|  | entity |  |  | Il tag descrive un'entità. (Solamente Famiglia 1.)
|  | property |  |  | Il tipo di tag è relativo a &CSS;. (Solamente Famiglia 2.)
|  | function |  |  | Il tipo di tag è una funzione script. Quando viene usato <attr > rappresenta gli argomenti della funzione. (Solamente Famiglia 2.)
|  | class |  |  | Il tipo di tag è una classe script. (Solamente Famiglia 2.)
|  | method |  |  | Il tipo di tag è un metodo di classe. (Solamente Famiglia 2.)
returnType | string |  | void | opzionale | Specifica il tipo di valore restituito dal tag che si sta definendo. (Solamente Famiglia 2.)
|  | void |  |  | Il tipo di tag restituisce void.
|  | int |  |  | Il tipo di tag restituisce int.
|  | float |  |  | Il tipo di tag restituisce float.
|  | long |  |  | Il tipo di tag restituisce long.
|  | string |  |  | Il tipo di tag restituisce string.
version | string |  |  | opzionale | Specifica la versione del linguaggio per cui è valido il tag
extends | string |  |  | opzionale | Valido solo nel caso in cui il tipo di tag è "class". Il nome della classe base per questa classe. (Solo Famiglia 2.)
class | string |  |  | opzionale | Valido solo nel caso in cui il tipo è "method". Specifica il nome della classe a cui appartiene questo metodo. (Solo Famiglia 2.)
common | boolean |  |  | opzionale | Se "yes", il tag specifica un attributo comune per il gruppo e gli attributi all'interno di questo tag possono essere collegati a qualsiasi altro tag. (Solo Famiglia 1.)
comment | string |  |  | opzionale | la stringa di commento appare vicino al nome del tag nella casella di completamento

##### label

Posiziona un'etichetta nella finestra di dialogo. Il testo è specificato dal tag <text >. Questo è un elemento di tipo solo-elemento.

Genitore(i) | Figli
tag | text, location

##### attr

Definisce un attributo del tag. Questo elemento occorre una volta per ogni attributo. Definisce il nome ed il tipo di attributo. Inoltre contiene dei tag addizionali che specificano come dovrebbe essere visualizzato questo attributo e così via. Questo è un elemento di tipo solo-elemento.

Genitore(i) | Figli
tag | location, list, tooltip, whatsthis, textlocation

Attributo | Type | Valori | Predefinito | Uso | Descrizione
name | string |  |  | fondamentale | Specifica il nome dell'attributo che si sta definendo.
type | string |  | input | fondamentale | Specifica il tipo di attributo che si sta definendo.
|  | input |  |  | Il campo supporta testo libero (campo testo).
|  | check |  |  | Il valore del campo è boolean (casella di selezione).
|  | color |  |  | Il valore del campo è un colore.
|  | url |  |  | Il valore del campo è un &URL;. (File locale a cui fare riferimento.)
|  | list |  |  | Il valore del campo è un elemento di una lista specificata.
status | string |  | opzionale | fondamentale | Specifica se l'argomento è fondamentale o meno. (Solamente Famiglia 2.)
|  | opzionale |  |  | L'argomento è opzionale.
|  | fondamentale |  |  | L'argomento è fondamentale.
|  | implicato |  |  | L'argomento è implicato.
source | string |  |  | opzionale | Specifica il sorgente utilizzato per riempiere le voci dell'attributo nella finestra di dialogo dell'editor del tag e nell'albero degli attributi
|  | selection |  |  | Il testo selezionato viene utilizzato come sorgente
|  | dcop |  |  | Viene utilizzato come sorgente il risultato di un metodo dcop
interface | string |  |  | opzionale | Richiede source="dcop". Viene utilizzata l'interfaccia dcop all'interno di &quantaplus; per ottenere la sorgente di dati.
method | string |  |  | opzionale | Richiede source="dcop" ed il nome di un'interfaccia. Viene utilizzato come sorgente di dati il nome del metodo dcop all'interno di &quantaplus;.
arguments | string |  |  | opzionale | Richiede source="dcop", il nome di un'interfaccia ed il nome di un metodo. Gli argomenti passati al metodo. Possono essere vuoti o "%tagname%", per il nome del tag corrente.

##### tooltip

Definisce il suggerimento per un campo nella finestra di dialogo. Questo elemento è di tipo solo-testo.

Per ora, è supportato solamente il testo semplice (non puoi usare nessun markup).

Genitore(i) | Figli
attr | NESSUNO

##### whatsthis

Definisce l'aiuto 'Che cos'è di un campo nella finestra di dialogo. Questo elemento è di tipo solo-testo.

Per ora, è supportato solamente il testo semplice (non puoi usare nessun markup).

Genitore(i) | Figli
attr | NESSUNO

##### list

Un tag contenitore che raggruppa insieme gli elementi di una lista. Può apparire solamente una volta per ogni descrizione di attributo. Questo è un elemento di tipo solo-elemento.

Genitore(i) | Figli
attr | item

##### item

Definisce un elemento in una lista. Questo elemento è di tipo solo-testo.

Genitore(i) | Figli
list | NESSUNO

##### textlocation

Specifica la posizione del testo dell'attributo di un tag all'interno di una finestra di dialogo. Questo tag può apparire una sola volta per ogni attributo nella finestra di dialogo (cioè una volta per ogni tag <attr >). Questo elemento è di tipo vuoto.

Genitore(i) | Figli
attr | NESSUNO

Attributo | Type | Uso | Descrizione
row | nonNegativeInteger | fondamentale | Specifica la riga nella disposizione della finestra di dialogo di un campo o di una etichetta.
col | nonNegativeInteger | fondamentale | Specifica la colonna nella disposizione della finestra di dialogo di un campo o di una etichetta.
rowspan | nonNegativeInteger | opzionale | Specifica il numero di righe che un campo dovrebbe occupare.
colspan | nonNegativeInteger | opzionale | Specifica il numero di colonne che un campo dovrebbe occupare.

##### location

Specifica la posizione e la dimensione di un campo nella finestra di dialogo. Questo tag dovrebbe occorrere una sola volta per ogni campo nella finestra di dialogo (cioè una volta per ogni tag <attr > e <label >). Questo elemento è di tipo vuoto.

Genitore(i) | Figli
label, attr | NESSUNO

Attributo | Type | Uso | Descrizione
row | nonNegativeInteger | fondamentale | Specifica la riga nella disposizione della finestra di dialogo di un campo o di una etichetta.
col | nonNegativeInteger | fondamentale | Specifica la colonna nella disposizione della finestra di dialogo di un campo o di una etichetta.
rowspan | nonNegativeInteger | opzionale | Specifica il numero di righe che un campo dovrebbe occupare.
colspan | nonNegativeInteger | opzionale | Specifica il numero di colonne che un campo dovrebbe occupare.

##### text

Definisce il testo di un'etichetta o di una casella di selezione. Questo elemento è di tipo solo-testo.

Genitore(i) | Figli
label, attr | NESSUNO

##### children

Definisce una lista di elementi che possono apparire all'interno del tag che si sta definendo. Questo elemento è di tipo solo-elemento.

Genitore(i) | Figli
tag | child

##### child

Definisce un tag figlio. Questo elemento è di tipo vuoto.

Genitore(i) | Figli
children | NESSUNO

Attributo | Type | Valori | Uso | Descrizione
name | string |  | fondamentale | Specifica un tag che può apparire all'interno di un certo tag.
usage | string |  | opzionale | Specifica la relazione con il genitore.
|  | fondamentale |  | Il genitore deve avere almeno un figlio con questo nome.

##### stoppingtags

Definisce una lista di elementi che forzano la chiusura di un tag. Questo elemento è di tipo solo-elemento.

Genitore(i) | Figli
tag | stoppingtag

##### stoppingtag

Definisce un tag di stop. Questo elemento è di tipo vuoto.

Genitore(i) | Figli
stoppingtags | NESSUNO

Attributo | Type | Uso | Descrizione
name | string | fondamentale | Specifica quali tag forzano la chiusura di altri tag.

#### Utilizzo di TagXML

Tutti i file TagXML devono iniziare con la dichiarazione &XML;: <?xml version="1.0" encoding="UTF-8"?> e devono essere annidati e conclusi correttamente.

Gli spazi bianchi non influenzano negativamente nulla, ma fai attenzione con i caratteri & e <. Questi dovrebbero solitamente essere sostituiti rispettivamente da &amp; e &lt;, in elementi come <tooltip >, <whatsthis >, e <text >. Non farlo non causerà un crash, ma pezzi del tuo lavoro spariranno.

#### Validazione dei file TagXML

Per validare i tuoi file TagXML, fai clic semplicemente sulla finestra di dialogo a comparsa Strumenti in cima a &quantaplus; e seleziona Valida TagXML. Verrà aperta una finestra di dialogo e dovrai solo seguire le sue semplice indicazioni.

Questa funzionalità non è al momento presente. Per ora la validazione avviene quando i file TagXML sono caricati in &quantaplus;.

#### Esempi di TagXML

##### Famiglia 1

Il paragrafo che segue ti mostrerà un file TagXML valido per la Famiglia 1. Questo file descrive l'elemento <schema > dell'&XML; &W3C;. Il nome di questo file TagXML dovrebbe essere schema.tag. Semplice, no?

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE TAGS>
    <TAGS>
     <tag name="schema">
      <label>
       <text
    >id</text>
       <location col="0" row="0"/>
      </label>
      <attr name="id" type="input">
       <tooltip
    >Un ID unico per l'elemento.</tooltip>
       <whatsthis
    >Un ID unico per l'elemento.</whatsthis>
       <location col="1" row="0"/>
      </attr>

      <label>
       <text
    >version</text>
       <location col="0" row="1"/>
      </label>
      <attr name="version" type="input">
       <tooltip
    >Versione dello schema.</tooltip>
       <whatsthis
    >Versione dello schema.</whatsthis>
       <location col="1" row="1"/>
      </attr>

      <label>
       <text
    >targetNamespace</text>
       <location col="0" row="2"/>
      </label>
      <attr name="targetNamespace" type="input">
       <tooltip
    >Riferimento &URI; dello spazio dei nomi di questo schema.</tooltip>
       <whatsthis
    >Riferimento &URI; dello spazio dei nomi di questo schema.</whatsthis>
       <location col="1" row="2"/>
      </attr>

      <label>
       <text
    >xmlns</text>
       <location col="0" row="3"/>
      </label>
      <attr name="xmlns" type="input">
       <tooltip
    >Riferimento &URI; per uno o più spazi dei nome da utilizzare in questo schema.
       Se non viene utilizzato alcun prefisso, allora i componenti dello spazio dei nomi potrebbero essere usati senza qualifica.</tooltip>
       <whatsthis
    >Riferimento &URI; per uno o più spazi dei nome da utilizzare in questo schema.
       Se non viene utilizzato alcun prefisso, allora i componenti dello spazio dei nomi potrebbero essere usati senza qualifica.</whatsthis>
       <location col="1" row="3"/>
      </attr>

      <label>
       <text
    >attributeFormDefault</text>
       <location col="0" row="4"/>
      </label>
      <attr name="attributeFormDefault" type="list">
       <items>
        <item
    >qualified</item>
        <item
    >unqualified</item>
       </items>
       <tooltip
    >Forma predefinita per tutti gli attributi all'interno di questo schema.</tooltip>
       <whatsthis
    >Forma predefinita per tutti gli attributi all'interno di questo schema.</whatsthis>
       <location col="1" row="4"/>
      </attr>

      <label>
       <text
    >elementFormDefault</text>
       <location col="0" row="5"/>
      </label>
      <attr name="elementFormDefault" type="list">
       <items>
        <item
    >qualified</item>
        <item
    >unqualified</item>
       </items>
       <tooltip
    >Forma predefinita per tutti gli elementi all'interno di questo schema.</tooltip>
       <whatsthis
    >Forma predefinita per tutti gli elementi all'interno di questo schema.</whatsthis>
       <location col="1" row="5"/>
      </attr>

      <label>
       <text
    >blockDefault</text>
       <location col="0" row="6"/>
      </label>
      <attr name="blockDefault" type="input">
       <location col="1" row="6"/>
      </attr>

      <label>
       <text
    >finalDefault</text>
       <location col="0" row="7"/>
      </label>
      <attr name="finalDefault" type="input">
       <location col="1" row="7"/>
      </attr>
     </tag>
    </TAGS>

##### Famiglia 2

Quanto segue ti mostrerà un file TagXML valido della Famiglia 2. Questo file descrive la funzione overload di &PHP;. Il nome di questo file TagXML dovrebbe essere overload.tag.

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE tags>
    <tags>
      <tag name="overload" type="function" returnType="void">
    <attr name="class_name" type="string" status="optional"/>
      </tag>
    </tags>

### &descriptionrc;

Il file &descriptionrc; è, inoltre, abbastanza semplice ed esiste un suo editor raggiungibile tramite DTD Modifica impostazioni DTD. Verrà così modificato il file &descriptionrc; di un &DTEP; che puoi scegliere da una lista.Per modificare il file &descriptionrc; di un &DTEP; appena creato dovresti creare un semplice &descriptionrc; con le seguenti voci:

            [General]
            Version = Usa 1 per &quantaplus; version <=3.1.2 e 2 per qualsiasi versione successiva.
            Name = stringa di definizione del DTD. (-//&W3C;//DTD HTML 4.01 Transitional//EN)
            NickName = Il nome abbellito del DTD. (HTML 4.01 Transitional). Se non definito verrà
    utilizzato Name come NickName.

Una volta creato mettilo assieme ai file tag, carica il &DTEP; appena creato con DTD Carica pacchetto DTD (DTEP). Quando sarà caricato potrai cominciare a modificare le impostazioni del &DTEP;. Controlla i suggerimenti e i testi del "Che cos'è?" per le varie voci della finestra di dialogo dell'editor per capire il significato di ogni voce. In alternativa puoi leggere `quanta/data/dtep/dtd-description.txt` dal pacchetto tar del sorgente che contiene una descrizione del formato.

## Azioni definite dall'utente

Le azioni sono molto comuni in ogni applicazione. Facendo clic sull'icona di una barra degli strumenti, selezionando un elemento del menu o utilizzando una scorciatoia attiva di solito un'azione. In &quantaplus; le azioni vengono portate ad un livello superiore. Invece di essere cablate (cioè create dal programmatore applicativo a livello del codice sorgente) sono creabili e modificabili dall'utente ordinario, permettendo così di aggiungere nuove funzionalità a &quantaplus;. Queste sono le azioni definite dall'utente e persino molte delle azioni predefinite di &quantaplus; sono definite dall'utente (e modificabili dall'utente).

Esistono tre tipi di azioni definibili dall'utente:

- Azioni testo

- Azioni tag

- Azioni script

### Creare le azioni

Puoi creare un'azione tramite Impostazioni Configura azioni. Fai clic su Nuova azione per incontrare una finestra di dialogo simile alla seguente:

Tipo

- Specifica il tipo di azione (Testo, Tag, Script).

Testo

- Il nome dell'azione visibile all'utente.

Il pulsante accanto all'etichetta Testo

- L'icona assegnata a quest'azione. Fai clic per modificare l'icona corrente.

Suggerimenti

- Breve descrizione di cosa fa l'azione.

Scorciatoia

- La scorciatoia assegnata a questa azione. Fai clic su Personalizzato o vicino al pulsante Personalizzato per assegnare una scorciatoia; fai clic suNessuno per rimuovere la scorciatoia attualmente assegnata.

Contenitori della barra degli strumenti

- Le barre degli strumenti definite dall'utente dove questa azione appare. Vedi creating-toolbars-3-2.

Impostazioni dettagliate

- Specifica le impostazioni per differenti tipi di azioni. Vedi sotto.

### Azioni testo

L'azione più semplice. Puoi inserire del testo nell'area Impostazioni dettagliate e ogni volta che l'azione verrà eseguita questo testo sarà inserito nel tuo documento alla posizione corrente del cursore. Vedi l'esempio sotto.

### Azioni tag

Utile per inserire tag XML, ma puoi chiaramente utilizzarle per altri scopi.

<tag>

- Il nome del tag.

</tag>

- Se attivato quando l'azione viene eseguita questo testo sarà inserito come tag di chiusura. Se esiste un'area selezionata nel documento prima che tu esegua l'azione, il <tag> sarà inserito prima dell'area selezionata e </tag> dopo.

Esegui "Modifica tag" se disponibile

- Se attivato ed esiste un file tagXML per questo tag, verrà mostrata una finestra di dialogo di modifica del tag prima dell'inserimento del tag stesso nel documento, così che tu possa regolare finemente gli attributi del tag.

<tag> e </tag> saranno inseriti come sono stati digitati qui. I simboli <, > o / non verranno aggiunti automaticamente.

### Azioni script

Il tipo di azione più potente. Con l'aiuto di questa azione puoi eseguire applicazioni esterne (di solito script, ma non vi è un limite particolare), che possono alterare il tuo documento o utilizzare il tuo documento (o parte del tuo documento) come input. Esempi di &quantaplus; stesso sono la finestra di dialogo Avvio rapido, le varie azioni Visualizza in... per i DTEP (X)HTML.

Innanzitutto devi inserire il nome del tuo script incluso l'interprete. Ad esempio: `sh /home/miaHome/mioScript.sh`.

Anche se puoi utilizzare percorsi completi, è preferibile usare la variabile `%scriptdir` nella riga di comando, come in `sh %scriptdir/mioScript.sh`. In questo modo &quantaplus; proverà a trovare il tuo script nelle seguenti posizioni:

- la cartella globale degli script: ``$KDEDIR`/share/apps/quanta/scripts`

- la cartella locale degli script: ``$KDEHOME`/share/apps/quanta/scripts`

- il tuo path: `$PATH`

Esistono altre variabili speciali che puoi utilizzare sulla riga di comando:

- `%f`: verrà sostituita dall'URL del documento corrente. Nel caso di documenti locali, il prefisso file:/ verrà rimosso dal nome del documento.

- `%input`: verrà sostituita dall'input selezionato. Vedi sotto.

- `%projectbase`: verrà sostituita dall'URL del progetto corrente. È vuota se non è stato caricato alcun progetto.

- `%pid`: verrà sostituita dal PID del processo di &quantaplus; in esecuzione. Se &quantaplus; è in esecuzione in modalità unica, la stringa "unique" precederà il numero del PID. Utile quando vuoi usare DCOP per controllare &quantaplus; da uno script esterno.

- `%userarguments`: utile nel caso di eventi. Questa variabile verrà sostituita dalle proprietà degli eventi nel seguente ordine:

  Primo argomento

- L'id univoco dello script

Secondo argomento

- il nome dell'evento

Terzo argomento

- i parametri dell'evento, solitamente il nome del file del documento corrente o il percorso del file del progetto.

Accanto ai precedenti metodi lo script può ricevere dell'input da &quantaplus; tramite lo standard input. Nella casella combo Input puoi selezionare che cosa deve essere inviato sullo standard input. Le scelte possibili sono:

- Nulla: non viene inviato nulla allo script.

- Documento corrente: viene inviato allo script l'intero documento.

- Testo selezionato: viene inviata allo script l'area del documento selezionata. L'utilizzo della variabile `%input` di solito ha senso solo quando si usa questa impostazione.

In maniera simile alla voce Input puoi catturare l'output dell'applicazione eseguita. Ci sono due tipi di output:

- l'output normale, stampato sullo standard output;

- i messaggi di errore, stampati sullo standard error.

Puoi specificare che cosa debba accadere al testo stampato sullo standard output, modificando il valore della casella combo Output:

- Nulla: l'output dell'applicazione viene ignorato.

- Inserisci nella posizione del cursore: l'output verrà inserito nel documento e nella posizione corrente.

- Sostituisci selezione: l'area selezionata del documento verrà sostituita dall'output.

- Sostituisci selezione: l'area selezionata del documento verrà sostituita dall'output.

- Crea un nuovo documento: verrà creato un nuovo documento contenente l'intero output dello script.

- Sostituisci il documento corrente: l'intero documento verrà sostituito dall'output.

- Finestra di messaggio: l'output apparirà nella vista Messaggi.

Le scelte disponibili per lo standard error (Error) sono le stesse dell'output normale.

## Creare Barre degli strumenti

Quanto segue ti mostrerà come creare barre degli strumenti per un &DTEP;. Le barre degli strumenti sono degli elementi grafici cui sono assegnate delle azioni. Le azioni in &quantaplus;, sono alla base di quasi tutte le estensioni che &quantaplus; possiede e che acquisirà in futuro. Lo stesso meccanismo che definisce un azione in &quantaplus; abilita anche l'auto-completamento nelle finestre di dialogo dei tag. L'utilizzo che puoi fare delle azioni è virtualmente illimitato. Per fare un esempio, useremo &HTML; tidy sulle nostre pagine web.

### Da Zero al Completo

Per iniziare, dovrai creare una barra degli strumenti dell'utente. Seleziona Barre degli strumenti Aggiungi Barra degli strumenti dell'Utente .

Se ci sono molti tag per il linguaggio di markup, ti raccomandiamo di dividerli in gruppi logici. Avrai bisogno di creare una nuova barra degli strumenti per ogni gruppo. In questo caso, non ce ne sono molti, perciò costruiremo solamente una barra degli strumenti e la chiameremo con il nome del markup.

Una volta che saranno create tutte le tue barre degli strumenti, dovrai aggiungere e configurare le azioni. Per questo, seleziona Impostazioni Configura Azioni .

Le parti di questa finestra sono molto chiare. Premi il pulsante Nuova azione alla base della finestra per entrare nella modalità di modifica.

Completa tutti i campi necessari ed aggiungi il tag alla(/e) barra(/e) degli strumenti appropriata(/e).

Completa il resto e, se il tag ha degli attributi ed hai intenzioni di usarli sempre, attiva la casella Apri finestra di dialogo "Modifica tag" se disponibile così che ti venga proposta ogni volta che usi questa azioni.

Dovresti aver ottenuto ora qualcosa di molto simile a quanto segue.

Premi il pulsante Applica per vedere l'azione aggiunta alla(/e) barra(/e) degli strumenti che hai selezionato.

Oh no! Quell'icona è orribile. Come farete tu e gli altri a ricordare che quell'icona è associata a quell'azione? Sostituiamola prima che sopraggiungano dei problemi.

Per creare un'icona che descriva in maniera più accurata quell'azione, utilizzeremo &kiconedit;. Selezionalo dal &kmenu;, Grafica More Applications (o dove l'ha posto la tua distribuzione).

&kiconedit; inizia per impostazione predefinita con la dimensione di 32x32 pixel, ma noi abbiamo bisogno di 22x22. Per cambiare, seleziona Modifica Ridimensiona .

Tieni a mente che stai creando un'icona che non aiuterà solo te a ricordare quale azione fa cosa, ma anche agli altri utenti del &DTEP;.

Dato che il tag per cui sto creando l'icona è chiamato inizio, ho deciso di creare un segnale di Start. Usando il colore verde (il verde viene spesso interpretato come vai, inizio o procedi) porterà, o dovrebbe trasmettere un messaggio all'utente che facendo clic su questa azione verrà posto un tag <start> nel documento corrente.

Adesso che ho finito con la creazione dell'icona, la salverò.

Una volta che avrai finito di creare l'icona, dovrai associarla con l'azione. Per farlo, apri di nuovo (in &quantaplus;) Impostazioni Configura Azioni e seleziona l'azione per cui hai creato l'icona. A lato del campo Testo, vedrai un pulsante su cui fare clic.

Seleziona Altre Icone e poi fai clic sul pulsante Sfoglia.

Raggiungi la cartella in cui hai salvato l'icona, selezionala e fai clic su OK.

Premi il pulsante Applica e fai lo stesso per tutti gli altri tag, se ce ne sono, o fai clic su OK per finire.

Supponiamo che tu voglia aggiungere alcune tipiche funzioni di &quantaplus; alla tua barra degli strumenti o magari pensi che la barra degli strumenti sarebbe meglio organizzata in una differente maniera con alcuni separatori per raggruppare le azioni. Apri la finestra di dialogo Configura le barre degli strumenti andando su Impostazioni Configura le barre degli strumenti . Assicurati che la tua barra degli strumenti sia selezionata.

Sceglierò il separatore (in cima alla colonna di sinistra) per la mia barra degli strumenti. Una volta selezionato l'elemento che vuoi aggiungere alla tua barra degli strumenti, premi il pulsante con la freccia a destra. Così verrà aggiunto alla tua barra degli strumenti.

Penso che avrò bisogno di una maniera rapida per accedere all'Anteprima di Konqueror. La selezionerò e l'aggiungerò alla barra degli strumenti.

Nota come il separatore aiuti a raggruppare. Un utente privo di esperienza avrebbe potuto pensare che il pulsante di &konqueror; fosse stato analogo o addirittura opposto al pulsante start.

Applica le tue modifiche e, quando hai terminato, premi OK per finire.

Ah, guarda alla nuova e fantastica barra degli strumenti! Molto più maneggevole ora.

Ricordati di verificare la tua barra degli strumenti, facendo clic su tutti i pulsanti, così da verificare che l'output sia corretto.

Ora, per salvare la barra degli strumenti, selezioneremo Barre degli strumenti Salva barre degli strumenti Salva con nome la barra degli strumenti locale .

Salvala nella cartella corretta. Dato che NeXML non esiste, la metterò nella cartella di primo livello, ma la tua barra degli strumenti dovrebbe essere salvata nella cartella corretta. Assicurati di impostare il tuo file &descriptionrc; così da caricare la tua barra degli strumenti quando viene creato un nuovo file di quel tipo.

## Creare la Tua Documentazione

Le aggiunte più evidenti in &quantaplus; per l'utente generico saranno, probabilmente, l'aggiunta della documentazione per il linguaggio markup o scripting che ti piace di più. Per questo, questo capitolo spiegherà come creare l'albero della documentazione di &PHP; per il mio uso personale.

Prima di iniziare a creare la tua documentazione, potresti voler controllare l'archivio di &quantaplus; per vedere se qualcun altro l'ha già creata.

Ci sono due fasi in questo processo. Primo, devi procurarti la documentazione esistente per il linguaggio di markup/scripting/eccetera che stai curando. Secondo, devi creare il file `docrc`. La prima fase dipende da te, la seconda è quella che affronteremo ora.

La forma generica del file docrc è la seguente:

    #File di Configurazione di KDE
    [Tree]
    Doc dir=percorso, relativamente a questo file, per i file html della documentazione ad esempio, php42/
    #elementi di primo livello
    Top Element=La tua descrizione per questa documentazione Ad esempio, documentazione &PHP; 4.2

    Sezione 1=Sezione1.html
    Sezione 2=#Sez2.1,#Sez2.2,#Sez2.3
    Sez2.1=Sez2.1.html
    Sez2.2=Sez2.2.html
    Sez2.3=Sez2.3.html
    ...

    [Context]
    ContextList=funz1,funz2,tag1,tag2,tag3
    funz1=funz1.html
    funz2=funz2.html
    tag1=tag1.html
    tag2=tag2.html
    tag3=tag3.html

Il file `docrc` è suddiviso in due sezioni: Albero e Contesto.

La sezione Tree definisce l'aspetto con cui viene presentata la documentazione nella scheda omonima. Per esempio, potrai osservare che con la documentazione di &PHP; hai qualcosa di simile a:

Facendo riferimento a quanto mostrato sopra, il mio file `docrc` di &PHP; appare così:

    #KDE Config File

    [Tree]

    Doc dir=php42/

    #top level elements
    Top Element=PHP 4.2 documentation

    PHP 4.2 documentation=Table of Contents,#Getting Started,#Language Reference

    Table of Contents=index.html

    Getting Started=Introduction, ...
    Introduction=introduction.html
    ...

    Language Reference=Basic syntax, ...
    Basic syntax=language.basic-syntax.html
    ...

Osserva il `#` davanti a Getting Started e Language Reference. Questo sta ad indicare che questi sono sotto-contenitori dell'albero e che hanno un proprio contenuto. Non credo che ci sia un limite al livello di profondità (oltre a quello indicato dal buonsenso) — usa il tuo giudizio.

Per il Sommario, avrai notato che fa riferimento direttamente ad un file (e di conseguenza appare in fondo alla rappresentazione dell'albero — le cartelle vengono prima!).

Gli spazi non influiscono su nulla, ma fai attenzione ai caratteri & e <. Questi dovrebbero essere sostituiti rispettivamente da &amp; e &lt; in tutti i file di risorsa di &quantaplus; basati su &XML;.

La sezione Context è la sezione del file docrc che viene usata per facilitare l'aiuto sensibile al contesto. Per esempio, stai scrivendo uno script &PHP; e desideri vedere la documentazione per la funzione `mysql_fetch_array`. Evidenzia semplicemente la funzione e premi &Ctrl;H per l'aiuto contestuale. Verrà immediatamente visualizzata la documentazione di `mysql_fetch_array`. Ci sono solo due tipi di voci qui: ContextList e le righe di associazione ai file.

ContextList

- Molto semplicemente, questa è solo una lista di voci di contesto, separati da una virgola, che desideri siano disponibili (per &PHP;, questi sono le funzioni di &PHP;).

Righe di associazioni dei file

- Queste sono nella forma elemento di contesto=pagina della documentazione html. Ad esempio acos=function.acos.html

Una versione ridotta della sezione Contesto del mio `docrc` è la seguente:

    #Parole chiave per l'aiuto contestuale
    [Context]
    ContextList=abs,acos,acosh,addcslashes,addslashes,...

    abs=function.abs.html
    acos=function.acos.html
    acosh=function.acosh.html
    addcslashes=function.addcslashes.html
    addslashes=function.addslashes.html
    ...

Adesso è sufficiente salvare il tuo file `docrc`, in `$`HOME`/.kde/share/apps/quanta/doc` o `$`KDEDIR`/share/apps/quanta/doc` rispettivamente per un uso locale o globale. Poi occorre creare una cartella (quella specificata nel tuo file `docrc`) nella stessa cartella del tuo file `docrc` e copiare lì le tue pagine &HTML;.

Dovrai riavviare &quantaplus; per vedere la tua documentazione.

Una volta che ti sei accertato che siano buoni e valga la pena condividerli, spedisci il file `docrc` assieme ad una descrizione riguardo a qualsiasi informazione pertinente su quale documentazione tu abbia usato all'archivio di &quantaplus; perché venga usato dalla comunità di &quantaplus;. Non diventerai ricco, ma ti sentirai gratificato sapendo di aver contribuito qualcosa alla miglior piattaforma di sviluppo web che esista.

## Condivisione delle risorse

Con &quantaplus; non sei solo. È possibile condividere con gli altri le diverse risorse (pacchetti DTEP, barre degli strumenti con le relative azioni, script, modelli). Ci sono due modi per farlo:

Spedire via posta elettronica

- Le risorse possono essere inviate tramite posta elettronica ai tuoi amici, colleghi o altri. Troverai la voce di menu Invia per posta elettronica in diversi posti, ad esempio DTD Invia il pacchetto DTD (DTEP) per posta elettronica, Barre degli strumenti Invia barra degli strumenti per posta elettronica, nel menu contestuale dei file e delle cartelle negli alberi Modelli e Script.

Spedire al server principale

- Le risorse possono essere spedite al nostro deposito principale, dal quale tutti gli altri utenti di &quantaplus; potranno scaricarle. Gli invii verranno esaminati e resi disponibili solo se la nostra squadra li considererà corretti ed utili per la pubblicazione. Per fare un invio valido ti suggeriamo di firmare le risorse, perciò hai bisogno di una chiave GPG/PGP. Questa informazione viene usata per verificare l'origine delle risorse sia dalla nostra squadra che dagli altri utenti.

  Riguardo a come ottenere delle risorse dal server principale download-resources.

  Durante l'invio ti verrà chiesto di inserire la parola chiave per la tua chiave segreta GPG (la parola chiave non verrà memorizzata), o nel caso tu abbia più chiavi segrete, ti verrà chiesto di scegliere quale intendi utilizzare. Nella finestra di dialogo Condividi le novità riempi gli appositi campi (la voce Anteprima URL potrà rimanere vuota) e inizia l'invio facendo clic su OK.

  Si può iniziare l'invio tramite il menu DTD Invia pacchetto DTD (DTEP), Barre degli strumenti Invia barra degli strumenti, nel menu contestuale dei file e delle cartelle nell'albero dei Modelli e degli Script.

## Ottenere le risorse

È possibile aggiornare la tua installazione di &quantaplus; senza installarne una nuova versione, scaricando le nuove risorse come i pacchetti DTEP, le barre degli strumenti con le azioni, i modelli, gli script e la documentazione. Una delle possibilità è quella di ottenere le risorse tramite posta elettronica o di scaricarle da un server web, nel qual caso dovrai installarle manualmente. Se sarai fortunato troverai anche uno script di installazione allegato alla risorsa. &quantaplus; possiede, inoltre, un server dedicato per archiviare le risorse che non sono state incluse nella distribuzione principale o a causa delle loro dimensioni o del loro utilizzo poco frequente, o che sono state contribuite in seguito dagli utenti. Queste risorse vengono installate automaticamente. Per scaricarle utilizza le varie voci Scarica nei rispettivi menu. Puoi trovarli nel menu DTD Scarica pacchetto DTD (DTEP), Barre degli strumenti Scarica barra degli strumenti, nel menu contestuale di un'area libera nell'elemento radice degli alberi Modelli, Script e Documentazione.

Dopo aver scaricato una risorsa, ma prima di averla installata, &quantaplus; ne verifica la validità, controllandone l'integrità e la firma elettronica. In caso di problemi li segnalerà e potrai decidere di continuare o meno. Per favore, leggi attentamente le finestre di dialogo. Nel caso in cui l'integrità sia corretta e la risorsa sia correttamente firmata, ti verrà comunque mostrata una finestra di dialogo informativa, così che tu possa vedere chi ha creato la risorsa.

Assicurati di installare le risorse, specialmente per quanto riguarda le barre degli strumenti e gli script, solo da sorgenti sicuri!

## Convertire una DTD in una &DTEP;

È possibile lavorare su linguaggi XML non supportati attualmente da &quantaplus; creandone il pacchetto DTEP. Ma la creazione potrebbe impiegare parecchio tempo, in quanto potresti dover creare centinaia di file tag nel formato tagXML. Chiaramente c'è un modo più rapido per farlo, convertendo automaticamente un DTD in un pacchetto DTEP.

La conversione può essere avviata dal menu DTD Carica e converti DTD. Seleziona il file `.dtd` che definisce il DTD che desideri utilizzare. Vedrai così la finestra di dialogo:

Le voci sono:

- Cartella di destinazione: il nuovo &DTEP; appena creato verrà posto in una cartella con questo nome al di sotto di ``$KDEHOME`/share/apps/quanta/dtep`.

- Nome:il nome (stringa di definizione) del DTD

- Pseudonimo: il nome del &DTEP; visibile all'utente

- Riga di definizione !DOCTYPE: la stringa che dovrà apparire nel tag !DOCTYPE, come HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"

- URL DTD: l'URL che punta al file DTD

- Estensione predefinita: l'estensione utilizzata solitamente per i file scritti in questo DTD

- Tag e attributi sensibili alle minuscole/maiuscole: autoesplicativo, di solito vero per le varianti dei linguaggi XML

- Raffina il DTEP dopo la conversione: se selezionato, avvenuta la conversione, &quantaplus; aprirà l'editor del file &descriptionrc;, così che tu possa raffinare il &DTEP; appena creato. Si raccomanda di lasciare questa opzione selezionata.