<?xml version="1.0"  encoding="UTF-8" ?>

<sect1 id="specials">
<sect1info>
<title
>Comandi Speciali e Variabili Globali Integrate</title>
<authorgroup>
<author
><firstname
></firstname
> <surname
></surname
> <affiliation
><address
> <email
></email>
</address
></affiliation>
</author>

<othercredit role="translator"
><firstname
>Samuele</firstname
><surname
>Kaplun</surname
><affiliation
><address
><email
>kaplun@aliceposta.it</email
></address
></affiliation
><contrib
>Traduzione del documento</contrib
></othercredit
> 

</authorgroup>
</sect1info>

<title
>Comandi Speciali e Variabili Globali Integrate</title>

<para
>I comandi speciali sono funzioni che vengono processate da &kommander;. Sappi che fino a quando &kommander; non avrà un parser completo tutti i comandi speciali saranno eseguiti prima che venga eseguito lo script. In molti casi questo non è un problema, ma talvolta sì. </para>

<variablelist>
<varlistentry>
<term
><function
>@dcop(<parameter
>appId</parameter
>, <parameter
>oggetto</parameter
>, <parameter
>funzione</parameter
>, <parameter
>argomenti</parameter
>)</function
></term>
<listitem>
<para
>Esegue una chiamata a &DCOP;. @dcop(<quote
>kmail</quote
>, <quote
>KMailIface</quote
>, <quote
>checkMail()</quote
>, <quote
></quote
>) </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@dcopid</function
></term>
<listitem>
<para
>L'id &DCOP; del processo (kmdr-executor-@pid) </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@dialog(<parameter
>finestra_di_dialogo</parameter
>[,<parameter
>parametri</parameter
>])</function
></term>
<listitem>
<para
>Richiama la finestra di dialogo di Kommander specificata. Le finestre di dialogo sono ricercate nella cartella delle finestre di dialogo e nella cartella corrente - in quest'ordine. Ciò mette in sospeso la chiamata all'esecutore ed imposta la cartella predefinita a quella in cui si trova l'applicazione di Kommander. I parametri possono essere passati nell'usuale maniera Unix o puoi passare dei parametri per nome come in <quote
>variabile=valore</quote
>. Puoi infine recuperare i parametri passati nell'ambiente globale. @global(variabile) ritornerebbe <quote
>valore</quote
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@env(<parameter
>variabileDiAmbiente</parameter
>)</function
></term>
<listitem>
<para
>Viene espanso alla variabile d'ambiente specificata. @env(PWD) viene espanso a $PWD. Ricorda che <quote
>$</quote
> è parte della sintassi shell e non dovrebbe essere utilizzato. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@exec(<parameter
>comando</parameter
>)</function
></term>
<listitem>
<para
>restituisce l'output dell'esecuzione del comando specificato. @exec(ls -l). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@execBegin ... @execEnd</function
></term>
<listitem>
<para
>come in <function
>@exec</function
>, ma supporta gli script shebang (cioè che cominciano, ad esempio, con #!/bin/sh) e su più righe. Questo è utile in diversi linguaggi di scripting sia dichiarandoli o utilizzando una shebang. </para>
<itemizedlist>
<listitem
><para
><function
>@execBegin(php)</function
></para
></listitem>
<listitem
><para
><function
>@execBegin</function
>#!/usr/bin/php</para
></listitem>
</itemizedlist>
<para
>Il primo utilizza il nome dell'eseguibile <acronym
>PHP</acronym
>. &kommander; cerca nel PATH <application
>php</application
> e se non lo trova verifica se è registrato con &kommander; in una posizione al di fuori del tuo path. Se non è così notifica all'utente che non può essere trovato. Il secondo esempio utilizza la classica <quote
>shebang</quote
> che può portare sia benefici che alcuni problemi. È utile ad esempio, se possiedi una copia beta di <acronym
>PHP5</acronym
> in <filename
>/usr/local/bin</filename
> che non deve essere trovata perché il percorso di ricerca è <filename
>/usr/bin</filename
>. Se, però, distribuisce la finestra di dialogo a qualcuno che ha messo <acronym
>PHP</acronym
> in <filename
>/usr/local/bin</filename
> questo non verrà trovato quando verrà usata la shebang. Perciò utilizzate le shebang con cautela. È invece raccomandato indicare l'eseguibile se condividete i file.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@global(<parameter
>variabile</parameter
>)</function
></term>
<listitem>
<para
>viene espanso nel valore della variabile globale specificata. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@null</function
></term>
<listitem>
<para
>Restituisce null. Ora che Kommander verifica i widget vuoti durante l'esecuzione questo comando preverrà la segnalazione errata di errori nel caso della non impostazione dello stato di un widget.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@parentPid</function
></term>
<listitem>
<para
>Il &PID; del processo genitore. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@pid</function
></term>
<listitem>
<para
>Il &PID; del processo. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@readSetting(<parameter
>chiave</parameter
>, <parameter
>valorePredefinito</parameter
>)</function
></term>
<listitem>
<para
>legge un valore da <filename
>kommanderrc</filename
> </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@selectedWidgetText</function
></term>
<listitem>
<para
>il contenuto selezionato di un widget che può visualizzare più di un valore, come i widget lista </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@setGlobal(<parameter
>variabile</parameter
>, <parameter
>valore</parameter
>)</function
></term>
<listitem>
<para
>Imposta la variabile globale al valore specificato. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@widgetText</function
></term>
<listitem>
<para
>il contenuto di un widget </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@writeSetting(<parameter
>chiave</parameter
>, <parameter
>valore</parameter
>)</function
></term>
<listitem>
<para
>scrive il valore in <filename
>kommanderrc</filename
> </para>
</listitem>
</varlistentry>
</variablelist>

<sect2 id="arrays">
<title
>Gruppo delle Funzioni per Array</title>

<variablelist>
<varlistentry>
<term
><function
>@Array.values(<parameter
>array</parameter
>)</function
></term>
<listitem>
<para
>Restituisce una lista separata da EOL di tutti i valori contenuti nell'array. Può essere utilizzato per scorrere attraverso l'array.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.keys(<parameter
>array</parameter
>)</function
></term>
<listitem>
<para
>Restituisce un elenco separato da fine riga (EOL) di tutte le chiavi del vettore.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.setValue(<parameter
>array</parameter
>, <parameter
>chiave</parameter
>, <parameter
>valore</parameter
>)</function
></term>
<listitem>
<para
>Imposta una chiave ed un valore per un elemento di un array. Se l'array non esiste, viene creato.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.clear(<parameter
>array</parameter
>)</function
></term>
<listitem>
<para
>Rimuove tutti gli elementi dal vettore.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.count(<parameter
>array</parameter
>)</function
></term>
<listitem>
<para
>Restituisce il numero di elementi nel vettore.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.value(<parameter
>array</parameter
>,<parameter
>chiave</parameter
>)</function
></term>
<listitem>
<para
>Restituisce il valore associato alla chiave indicata.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.remove(<parameter
>array</parameter
>,<parameter
>chiave</parameter
>)</function
></term>
<listitem>
<para
>Rimuove l'elemento con la chiave indicata dall'array.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.fromString(<parameter
>array</parameter
>,<parameter
>stringa</parameter
>)</function
></term>
<listitem>
<para
>Aggiunge tutti gli elementi nella stringa nell'array. La stringa dovrebbe essere nel formato <emphasis
>chiave\tvalore\n</emphasis
>."</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.toString(<parameter
>array</parameter
>,<parameter
>stringa</parameter
>)</function
></term>
<listitem>
<para
>Restituisce tutti gli elementi nell'array nel formato <emphasis
>chiave\t\n</emphasis
>."</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="files">
<title
>Gruppo di Funzioni per File</title>
<variablelist>

<varlistentry>
<term
><function
>@File.read(<parameter
>file</parameter
>)</function
></term>
<listitem>
<para
>Restituisce il contenuto del file indicato.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@File.write(<parameter
>file</parameter
><parameter
>stringa</parameter
>)</function
></term>
<listitem>
<para
>Scrive la stringa data su un file.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@File.append(<parameter
>file</parameter
><parameter
>stringa</parameter
>)</function
></term>
<listitem>
<para
>Aggiunge la stringa data alla fine del file.</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="strings">
<title
>Gruppo di Funzioni per Stringhe</title>
<variablelist>

<varlistentry>
<term
><function
>@String.length(<parameter
>stringa</parameter
>)</function
></term>
<listitem>
<para
>Restituisce il numero di caratteri nella stringa.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.contains(<parameter
>stringa</parameter
>,<parameter
>sottostringa</parameter
>)</function
></term>
<listitem>
<para
>Controlla se la stringa contiene la sottostringa data.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.find(<parameter
>stringa</parameter
>)</function
></term>
<listitem>
<para
>Restituisce la posizione di una sottostringa nella stringa, o -1 se non trovata."</para>
<note
><para
>Questo comando avrà un altro parametro intero opzionale indicante la posizione iniziale da cui cercare nella versione Alpha 6.</para
></note>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.left(<parameter
>stringa</parameter
>, <parameter
>int</parameter
>)</function
></term>
<listitem>
<para
>Restituisce i primi n caratteri della stringa.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.right(<parameter
>stringa</parameter
>, <parameter
>int</parameter
>)</function
></term>
<listitem>
<para
>Restituisce gli ultimi n caratteri della stringa.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.mid(<parameter
>stringa</parameter
>, <parameter
>int inizio</parameter
>, <parameter
>int fine</parameter
>)</function
></term>
<listitem>
<para
>Restituisce una sottostringa della stringa, iniziando dalla posizione data.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.remove(<parameter
>stringa</parameter
>, <parameter
>sottostringa</parameter
>)</function
></term>
<listitem>
<para
>Rimuove tutte le occorrenze di una data sottostringa.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.replace(<parameter
>stringa</parameter
>, <parameter
>sottostringa_trova</parameter
>, <parameter
>sottostringa_sostituisci</parameter
>)</function
></term>
<listitem>
<para
>Sostituisce tutte le occorrenze di una data sottostringa con un'altra fornita.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.upper(<parameter
>stringa</parameter
>)</function
></term>
<listitem>
<para
>Converte la stringa in maiuscolo.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.lower(<parameter
>stringa</parameter
>)</function
></term>
<listitem>
<para
>Converte la stringa in minuscolo.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.compare(<parameter
>stringa</parameter
>, <parameter
>stringa</parameter
>)</function
></term>
<listitem>
<para
>Confronta due stringhe. Restituisce 0 se sono uguali, -1 se la prima è più bassa, 1 se la prima è più alta</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.isEmpty(<parameter
>stringa</parameter
>)</function
></term>
<listitem>
<para
>Controlla se la stringa è vuota.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.isNumber(<parameter
>stringa</parameter
>)</function
></term>
<listitem>
<para
>Controlla se la stringa è un numero valido.</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="builtins">
<title
>Variabili Globali Integrate</title>
<para
>L'accesso alle variabili globali integrate è analogo alle variabili globali regolari con <function
>@global</function
>.</para>
<variablelist>
<varlistentry>
<term
><function
>@global(_KDDIR)</function
></term>
<listitem>
<para
>La cartella in cui si trova la finestra di dialogo corrente.</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><function
>@global(_NAME)</function
></term>
<listitem
><para
>Il nome della finestra di dialogo</para
></listitem>
</varlistentry>
</variablelist>
</sect2>

</sect1>
