# Personalizzazione avanzata del Pannello principale Pannello principalepersonalizzazione

È possibile personalizzare il Pannello principale usando i menu a scomparsa e i controlli “Installazione icona” dei pannelli secondari.

Questo capitolo descrive la personalizzazione del Pannello principale mediante la creazione e la modifica dei file di configurazione.

sag.frpc.mkr.3
sag.frpc.mkr.5
sag.frpc.mkr.6
sag.frpc.mkr.9
sag.frpc.mkr.13
sag.frpc.mkr.15
sag.frpc.mkr.23
sag.frpc.mkr.26

## Vedere anche

- Per informazioni di riferimento sui controlli e la configurazione del Pannello principale, vedere la pagina di spiegazioni `dtfpfile(4X)`.

- Per informazioni di riferimento sulla Gestione dello spazio di lavoro, vedere le pagine di spiegazioni `dtwm(1)` e `dtwmrc(4)`.

## File di configurazione del Pannello principale

Il Pannello principale è definito in un database di file di configurazione.

Modificando i file di configurazione è possibile personalizzare il Pannello principale. Alcune modifiche possono essere effettuate solo intervenendo sui file di configurazione; tra queste:

- L'aggiunta di un nuovo controllo al Pannello principale.

- L'aggiunta di controlli speciali, come le finestre dei client.

- Il cambiamento di alcuni comportamenti predefiniti — ad esempio, la risposta al clic singolo o doppio dei controlli del Pannello principale.

Per fornire la massima flessibilità nella configurazione del pannello, questi file possono essere personali, di sistema o residenti su altri sistemi.

Il Pannello principale viene creato e gestito attraverso la Gestione dello spazio di lavoro.

### File di configurazione predefinito del Pannello principale

Le impostazioni del Pannello principale predefinito si trovano nel file di configurazione `/usr/dt/appconfig/types/`lingua`/dtwm.fp`.

Questo file non dovrebbe essere modificato.

### Percorso di ricerca per i file di configurazione del Pannello principale

La definizione del Pannello principale può essere distribuita in qualsiasi numero di file residenti localmente o su sistemi remoti.

I file usati per definire il Pannello principale devono rispondere ai seguenti requisiti:

- Il nome del file deve terminare con il suffisso `.fp`; ad esempio, `posta.fp`.

- Il file deve trovarsi nel percorso di ricerca del database delle azioni.

Il percorso di ricerca predefinito per il database delle azioni include, nell'ordine, le seguenti directory:

DirectoryIniziale`/.dt/types` | Impostazioni personali
`/etc/dt/appconfig/types/`lingua | Impostazioni di sistema
`/usr/dt/appconfig/types/`lingua | Pannello e controlli predefiniti

Un'altra directory, DirectoryIniziale`/.dt/types/fp_dynamic`,
viene usata per le impostazioni personali effettuate con l'interfaccia utente. Non usare questa directory per modificare le impostazioni manualmente.

Il percorso di ricerca del database delle azioni può essere integrato con altre directory usate per configurare il sistema in un ambiente di rete. In particolare, è possibile aggiungere directory remote quando il sistema viene configurato per accedere ad un server di applicazioni. Per maggiori informazioni, vedere sag.datab.mkr.12.

### Regole di precedenza per la configurazione del Pannello principale

L'aspetto e il comportamento del Pannello principale sono il risultato di tutti i file di configurazione inclusi nel percorso di ricerca del database delle azioni.

Quando esiste un conflitto tra due o più componenti della definizione, il valore da applicare viene scelto in base a determinate regole di precedenza. Due componenti entrano in conflitto nei seguenti casi:

- Quando il nome del controllo, il valore di `CONTAINER_NAME` e il valore di `CONTAINER_TYPE` sono uguali.

- Oppure, quando sono in concorrenza per la stessa posizione (avendo nomi diversi ma gli stessi valori per i campi `CONTAINER_NAME`, `CONTAINER_TYPE` e `POSITION_HINTS` ).

Il Pannello principale utilizza le seguenti regole di precedenza:

- Se i componenti sono due controlli con lo stesso nome, e si trovano in contenitori con lo stesso nome e dello stesso tipo, verrà usato il componente letto per primo.

  Ad esempio, se un controllo di sistema e un controllo predefinito presentano valori uguali per questi campi ma valori diversi per il resto della definizione:

      CONTROL TextEditor
      {
         CONTAINER_TYPE   BOX
         CONTAINER_NAME   Top
         ...
      }

  avrà la precedenza il controllo di sistema.

- Se due componenti sono in competizione per la stessa posizione, essi verranno collocati nell'ordine in cui verranno letti.

  Ad esempio, se si crea un nuovo controllo personale per il Pannello principale (`CONTAINER_TYPE` BOX e `CONTAINER_NAME` Top) e lo si assegna alla posizione `POSITION_HINTS` 5, questo nuovo controllo farà scalare verso destra il controllo predefinito e tutti gli altri controlli con numeri di posizione più alti.

Quando si modifica un controllo creandone una nuova versione a livello di sistema o personale, la nuova definizione deve contenere lo stesso nome per il controllo e gli stessi valori per i campi `CONTAINER_NAME` e `CONTAINER_TYPE`. Diversamente, il nuovo controllo apparirà in aggiunta a quello esistente.

###
File del Pannello principale creati dinamicamente

Quando un utente personalizza il Pannello principale usando il controllo “Installazione icona” e i menu a scomparsa, le modifiche vengono scritte nella directory DirectoryIniziale`/.dt/types/fp_dynamic.`

Viene creato un altro file, DirectoryIniziale`/.dt/sessions/dtwmfp.session`,
che verrà usato per salvare e ripristinare lo stato del Pannello principale personalizzato ad ogni avvio di una sessione.

## Amministrazione delle personalizzazioni dell'interfaccia utente

Ogni utente ha la possibilità di personalizzare il Pannello principale usando i menu a scomparsa e i controlli “Installazione icona”.

Questa sezione descrive le procedure per:

- Impedire alcune modifiche personali. Ad esempio, si può rendere impossibile la cancellazione di un controllo da parte degli utenti.

- Annullare le modifiche personali. Ad esempio, sarà possibile ripristinare un controllo cancellato accidentalmente da un utente.

### Come impedire le modifiche personali

1. Se il controllo è predefinito, copiarne la definizione da `/usr/dt/appconfig/types/`lingua`/dtwm.fp` in `/etc/dt/appconfig/types/`lingua`/`nome`.fp`.

2. Aggiungere la riga seguente alla definizione del controllo:

   `LOCKED True`

### Come ripristinare un Pannello principale modificato, un controllo cancellato o un pannello secondario cancellato
cancellato

L'azione Ripristinare pannello principale del gruppo Strumenti_desktop elimina tutte le
modifiche apportate al Pannello principale. Gli utenti potranno usare questa azione per eliminare le modifiche personali eseguite coni menu a scomparsa del Pannello principale.

Per ripristinare un singolo controllo, usare la procedure seguente:

- In DirectoryIniziale`/.dt/types/fp_dynamic`, cancellare il file che è stato creato al momento della cancellazione del controllo. Il controllo avrà lo stesso nome di quello originale precedentemente cancellato.

  Ad esempio, se è stato cancellato il controllo dell'Editor delle icone, la directory `fp_dynamic` conterrà un file con i seguenti valori:

      CONTROL IconEditor
      (
         ...
         DELETE True
      }

Quando si cancella un pannello secondario, viene creato un file dinamico separato per il pannello secondario e per ognuno dei controlli contenuti in quel pannello.

For related information, see SAG.FrPC.div.11.

## Organizzazione della definizione del Pannello principale

La configurazione del Pannello principale risulta dalle definizioni dei suoi componenti. Ognuno di questi componenti ha una sintassi che ne definisce l'aspetto, il comportamento e la posizione nel Pannello principale.

### Componenti del Pannello principale

Il Pannello principale viene creato dall'esterno verso l'interno:

- Il pannello primario (`PANEL`)
  è il contenitore di primo livello per l'intero Pannello principale.

- Il pannello primario funge da contenitore per uno o più riquadri (`BOX`).

- Ogni riquadro `
  `è un contenitore per uno o più controlli (`CONTROL`).

Esistono due tipi di contenitori speciali:

- Il pannello secondario (`
  SUBPANEL`) è un contenitore associato a un controllo specifico (il controllo funge da contenitore per il pannello secondario). I pannelli secondari “scorrono in alto” a partire dal controllo a cui sono associati.

- L'area dei commutatori (
  `SWITCH`) contiene i pulsanti per la scelta dello spazio di lavoro ed alcuni altri controlli.

### Sintassi generale per la definizione del Pannello principale

Ogni componente del Pannello principale viene definito separatamente usando la sintassi:

    COMPONENTE nome
    {
       PAROLA_CHIAVE valore
       PAROLA_CHIAVE valore
       …
    }

Alcune parole chiave sono richieste obbligatoriamente, altre sono opzionali. Per maggiori informazioni, vedere la pagina di spiegazioni `dtfpfile(4X`).

####
Definizione del pannello primario (PANEL)

Il pannello primario è il componente di primo livello. La sua definizione include:

- Il nome del pannello

- Una serie di campi che descrivono l'aspetto generale e il comportamento dell'intero pannello

    PANEL nome_pannello_primario
    {
       PAROLA_CHIAVE valore
       PAROLA_CHIAVE valore
       …
    }

Il valore nome_pannello_primario indica il nome unico usato per il Pannello principale. Il nome predefinito è “FrontPanel”.

####
Definizioni dei riquadri (BOX)

La definizione di un riquadro comprende:

- Il nome del riquadro

- Il pannello primario in cui si trova il riquadro (`
  CONTAINER_NAME`)

- La posizione del riquadro nel pannello (`POSITION_HINTS` )

- I campi che descrivono l'aspetto e il comportamento e che si applicano all'intero riquadro

    BOX nome_riquadro
    {
       CONTAINER_NAME nome_pannello_primario
       POSITION_HINTS posizione
       PAROLA_CHIAVE  valore
       PAROLA_CHIAVE  valore
       …
    }

####
Definizioni dei controlli (CONTROL)

La definizione di un controllo specifica:

- Il nome del controllo

- Se il controllo si trova all'interno di un riquadro, di un pannello secondario o dell'area dei commutatori (`
  CONTAINER_TYPE`)

- Il riquadro, il pannello secondario o l'area dei commutatori in cui si trova il controllo (`
  CONTAINER_NAME`)

- La posizione del controllo nel riquadro (`POSITION_HINTS` ).

- L'aspetto e il comportamento del controllo

    CONTROL nome_controllo
    {
       CONTAINER_TYPE  BOX o SUBPANEL o SWITCH
       CONTAINER_NAME  nome_riquadro o nome_pannello o    nome_commutatore
       TYPE            tipo_di_controllo
       POSITION_HINTS  posizione
       PAROLA_CHIAVE   valore
       PAROLA_CHIAVE   valore
       …
    }

#### Definizioni dei pannelli secondari (SUBPANEL)

La definizione di un pannello secondario specifica:

- Il nome del pannello secondario

- Il nome del controllo a cui il pannello secondario è associato
  (`
  CONTAINER_NAME`)

- L'aspetto e il comportamento specifici del pannello secondario

    SUBPANEL nome_pannello_secondario
    {
       CONTAINER_NAME nome_controllo
       PAROLA_CHIAVE  valore
       PAROLA_CHIAVE  valore
       …
    }

####
Definizione dei commutatori (SWITCH)

La definizione di un commutatore specifica:

- Il nome del commutatore

- Il riquadro in cui si trova il commutatore (`
  CONTAINER_NAME`)

- La posizione del commutatore all'interno del riquadro ( `POSITION_HINTS`)

- L'aspetto e il comportamento del commutatore

    SWITCH nome_commutatore
    {
       CONTAINER_NAME nome_riquadro
       POSITION_HINTS posizione
       PAROLA_CHIAVE  valore
       PAROLA_CHIAVE  valore
       …
    }

## Modifica del Pannello primario

Il Pannello primario è la parte del Pannello principale che include tutti i controlli e gli elementi descritti nelle sezioni precedenti, esclusi i pannelli secondari.

### Contenitori del Pannello principale

Il Pannello principale può essere modificato come segue:

- Aggiungendo o eliminando un controllo

- Scambiando le posizioni dei controlli

### Come aggiungere un controllo al Pannello principale

1. Creare un file di configurazione per il Pannello principale:

   - A livello di sistema: `/etc/dt/appconfig/types/lingua/*.fp`

   - A livello personale: DirectoryIniziale`/.dt/types/*.fp`

2. Definire il controllo all'interno del file.

   Usare i campi `CONTAINER_NAME` e

   `CONTAINER_TYPE` per specificare il contenitore da usare per il controllo:

       CONTAINER_NAME Top
       CONTAINER_TYPE  BOX

   Usare il campo `POSITION_HINTS` per specificare la posizione del controllo, da sinistra verso destra. Poiché le impostazioni personali hanno la precedenza rispetto a quelle predefinite, il nuovo controllo “farà scalare” verso destra il controllo che occupava in precedenza la posizione specificata.

3. Salvare il file di configurazione.

4. Creare un'icona per il controllo del Pannello principale.

   Vedere sag.frpc.mkr.12.

5. Scegliere “Riavviare la Gestione dello spazio di lavoro” dal menu di controllo dello spazio di lavoro.

La definizione dell'esempio seguente, inclusa nel file `/etc/dt/appconfig/types/lingua/audio.fp`, inserisce il controllo di un'applicazione audio tra il controllo dell'Orologio e quello dell'Agenda.

    CONTROL ApplicazioneAudio
    {
       TYPE           icon
       CONTAINER_NAME Top
       CONTAINER_TYPE BOX
       ICON           AppAudio
       POSITION_HINTS 2
       PUSH_ACTION    AvviaApplicazioneAudio
       PUSH_RECALL    true
    }

### Come eliminare un controllo

1. Creare un file di configurazione per il Pannello principale:

   - A livello di sistema: `/etc/dt/appconfig/types/lingua/nome.fp`

   - A livello personale: DirectoryIniziale`/.dt/types/`nome`.fp`

2. Copiare la definizione del controllo da eliminare nel nuovo file.

   Se il controllo è predefinito, la sua definizione si troverà in `/usr/dt/appconfig/types/`lingua`/dtwm.fp.`

   Non è necessario copiare l'intera definizione. Tuttavia, la porzione da copiare deve includere i campi `CONTAINER_NAME` e `CONTAINER_TYPE`.

3. Aggiungere il campo `DELETE` alla definizione:

   `DELETE True`

4. Salvare il file di configurazione

5. Scegliere “Riavviare la Gestione dello spazio di lavoro” dal menu di controllo dello spazio di lavoro.

La definizione dell'esempio seguente, inclusa nel file `/etc/dt/appconfig/types/`lingua`/TrashCan.fp`, elimina il controllo del Cestino dal Pannello principale.

    CONTROL Trash
    {
       CONTAINER_NAME Top
       CONTAINER_TYPE BOX
       DELETE         True
    }

### Come modificare un controllo

Per modificare la definizione di un controllo — ad esempio per cambiare l'immagine dell'icona — usare la procedura seguente:

1. Copiare l'intera definizione del controllo da `/usr/dt/appconfig/types/`lingua`/dtwm.fp` in:

   - A livello di sistema: `/etc/dt/appconfig/types/lingua/nome.fp`

   - A livello personale: DirectoryIniziale`/.dt/types/`nome`.fp`.

2. Editare il campo che si desidera modificare. È anche possibile aggiungere nuovi campi.

3. Salvare il file.

4. Scegliere “Riavviare la Gestione dello spazio di lavoro” dal menu di controllo dello spazio di lavoro.

### Come scambiare la posizione dei controlli

1. Copiare le definizioni dei controlli che si desidera spostare da `/usr/dt/appconfig/types/`lingua`/dtwm.fp` in:

   - A livello di sistema: `/etc/dt/appconfig/types/lingua/nome.fp`

   - A livello personale: DirectoryIniziale`/.dt/types/`nome`.fp`.

     È necessario copiare l'intera definizione di tutti i controlli da spostare.

2. Scambiare i valori dei campi `
   POSITION_HINTS` tra le definizioni dei controlli.

3. Salvare il file.

4. Scegliere “Riavviare la Gestione dello spazio di lavoro” dal menu di controllo dello spazio di lavoro.

Le definizioni seguenti, incluse nel file `/etc/dt/appconfig/types/C/MailHelp.fp`, invertono le posizioni dei controlli della Gestione posta e della Gestione dell'aiuto e bloccano questi controlli per impedire modifiche personali da parte degli utenti.

    CONTROL Mail
    {
       POSITION_HINTS 12
       LOCKED         True
       …seguito della definizione del controllo
    }

    CONTROL Help
    {
       POSITION_HINTS 5
       LOCKED         True
       …seguito della definizione del controllo
    }

### Come sostituire un controllo del Pannello principale

1. Creare una nuova definizione che contenga gli stessi valori per:

   - nome_controllo

   - `
     CONTAINER_NAME`

L'esempio seguente mostra le definizioni di due controlli in due diversi file di configurazione. Poiché entrambe presentano lo stesso nome per il controllo e per il contenitore, esse vengono associate allo stesso controllo.

- Definizione in `/etc/dt/appconfig/types/C/ControlliSys.fp`:

      Control ApplicazioneImportante
      {
         CONTAINER_NAME   Top
         CONTAINER_TYPE   BOX
         POSITION_HINTS   2
      …

- Definizione in DirectoryIniziale`/.dt/types/MioControllo.fp`:

      Control ApplicazioneImportante
      {
         CONTAINER_NAME   Top
         CONTAINER_TYPE   BOX
         POSITION_HINTS   6
         …

Poiché la definizione personale ha la precedenza, il controllo verrà collocato in posizione 6.

### Come specificare l'icona da usare per un controllo

L'icona usata da un controllo viene definita nel campo `
ICON` della sua definizione.

Il valore del campo `ICON` può essere:

- Il nome base di un file.

  Per nome base si intende il nome del file grafico contenente l'icona meno i suffissi relativi alla dimensione (`m` e `t`) e al tipo di immagine (`bm` e `pm`). Ad esempio, nel caso di due file i cui nomi completi sono `Gioco.l.pm` e `Gioco.m.pm`, il nome base sarà `Gioco`.

  Per poter utilizzare il nome base, è necessario che i file delle icone si trovino in una directory inclusa nel percorso di ricerca delle icone:

  - Per le icone personali: DirectoryIniziale`/.dt/icons`

  - Per le icone di sistema: `/etc/dt/appconfig/icons/`lingua

- Il nome completo del file dell'icona preceduto dal percorso assoluto.

  Usare il percorso assoluto solo se il file non si trova nel percorso di ricerca delle icone.

La dimensione richiesta per l'icona dipende dalla posizione del controllo:

Posizione | Dimensione
Pannello principale | 48 x 48 pixel (nome`.l.pm` o nome`.l.bm)`
Pannello secondario | 32 x 32 pixel (nome`.m.pm` o nome`.m.bm)`

Collocare il file dell'icona in una delle seguenti directory:

- Icone personali: DirectoryIniziale`/.dt/icons`

- Icone di sistema: `/etc/dt/appconfig/icons/`lingua

## Creazione e modifica dei pannelli secondari

Per creare e modificare i pannelli secondari si possono usare i menu a scomparsa del Pannello principale.

Questa sezione descrive come effettuare le modifiche a livello di sistema intervenendo sui file di configurazione del Pannello principale.

Ogni pannello secondario è associato a un controllo del Pannello principale.

### Il contenitore di un pannello secondario è il controllo a cui è associato

L'associazione viene specificata nella definizione del pannello secondario. Il campo `CONTAINER_NAME` specifica il controllo a cui è associato il pannello secondario:

    CONTROL nome_controllo
    {
       …
    }

    SUBPANEL nome_pannello_secondario
    {
      CONTAINER_NAME nome_controllo
      …
    }

### Come creare un nuovo pannello secondario di sistema

1. Individuare il nome del controllo del Pannello principale a cui si desidera associare il nuovo pannello secondario.

   Se il controllo è predefinito, la sua definizione si troverà in `/usr/dt/appconfig/types/`lingua`/dtwm.fp`.

2. Creare un nuovo file `/etc/dt/appconfig/types/`lingua`/*.fp`.

3. Definire il pannello secondario:

       SUBPANEL nome_pannello_secondario
       {
          CONTAINER_NAME   nome_controllo
          TITLE            valore
          PAROLA_CHIAVE    valore
          …
       }

4. Salvare il nuovo file di configurazione.

5. Scegliere “Riavviare la Gestione dello spazio di lavoro” dal menu di controllo dello spazio di lavoro.

### Personalizzazione dei pannelli secondari predefiniti

È possibile modificare sia le caratteristiche generali (come il titolo) che il contenuto dei pannelli secondari predefiniti.

#### Come modificare le caratteristiche generali di un pannello secondario predefinito

1. Creare un nuovo file di configurazione per il Pannello principale:

   - A livello di sistema: `/etc/dt/appconfig/types/lingua/nome.fp`

   - A livello personale: DirectoryIniziale`/.dt/types/`nome`.fp`.

2. Copiare l'intera definizione del pannello secondario predefinito da `/usr/dt/appconfig/types/`lingua/`dtwm.fp` nel nuovo file:

       SUBPANEL nome_pannello_secondario
       {
           …
       }

3. Modificare la definizione del pannello secondario.

4. Salvare il nuovo file di configurazione.

5. Scegliere “Riavviare la Gestione dello spazio di lavoro” dal menu di controllo dello spazio di lavoro.

La definizione dell'esempio seguente, inclusa nel file `/users/anna/.dt/types/AppPers.fp`, cambia il nome del pannello secondario Applicazioni personali:

    SUBPANEL PersAppsSubpanel
    {
       CONTAINER_NAME TextEditor
       TITLE          Applicazioni di anna
    }

#### Come aggiungere un controllo di sistema a un pannello secondario predefinito

1. Creare un file di configurazione del Pannello principale di nome `/etc/dt/appconfig/types/lingua/nome.fp`.

2. Definire nel file il controllo di sistema da aggiungere.

   Usare i campi `CONTAINER_NAME` e `CONTAINER_TYPE` per specificare il contenitore per il controllo:

       CONTROL nome_controllo
       {
          CONTAINER_NAME nome_pannello_secondario
          CONTAINER_TYPE SUBPANEL
          …
       }

   Vedere sag.frpc.mkr.15.

3. Salvare il file di configurazione.

4. Scegliere “Riavviare la Gestione dello spazio di lavoro” dal menu di controllo dello spazio di lavoro.

L'esempio seguente riporta una definizione, inclusa in un file nuovo di nome `/etc/dt/appconfig/types/lingua/OrologioDigitale.fp`, che aggiunge un orologio digitale (DigitalClock nel gruppo Strumenti_desktop) al pannello secondario Applicazioni personali di tutti gli utenti.

    CONTROL ControlloOrologioDigitale
    {
       TYPE           icon
       CONTAINER_NAME PerAppsSubpanel
       CONTAINER_TYPE SUBPANEL
       ICON           Dtdgclk
       PUSH_ACTION    DigitalClock
       PUSH_RECALL    True
    }

#### Come eliminare un controllo da un pannello secondario predefinito

- Usare la stessa procedura descritta per l'eliminazione di un controllo dal Pannello primario. Vedere sag.frpc.mkr.11.

#### Come eliminare il controllo
Installazione icona

- Aggiungere il campo seguente alla definizione del pannello secondario:

  `CONTROL_INSTALL False`

### Come cambiare il comportamento di chiusura automatica dei pannelli secondari

Nell'impostazione predefinita, i pannelli secondari si chiudono quando si sceglie un controllo, a meno che il pannello non sia stato spostato dalla sua posizione originaria.

Il Pannello principale può essere configurato in modo da tenere i pannelli secondari aperti fino a un comando di chiusura esplicito.

1. Creare un nuovo file di configurazione per il Pannello principale in:

   - A livello di sistema: `/etc/dt/appconfig/types/lingua/*.fp`

   - A livello personale: DirectoryIniziale`/.dt/types/*.fp`

2. Copiare la definizione predefinita per il pannello da `/usr/dt/appconfig/types/`lingua/`dtwm.fp` nel nuovo file:

       PANEL FrontPanel
       {
          …
       }

3. Aggiungere alla definizione il campo seguente:

   `SUBPANEL_UNPOST False`

4. Salvare il nuovo file di configurazione.

5. Scegliere “Riavviare la Gestione dello spazio di lavoro” dal menu di controllo dello spazio di lavoro.

## Definizione dei controlli del Pannello principale

Ogni utente può creare una serie di controlli personali rilasciando le relative icone sui controlli “Installazione icona”.

Questa procedura permette di personalizzare facilmente il Pannello principale, ma offre solo un sottoinsieme delle funzionalità disponibili per i controlli. Ad esempio, un controllo creato con “Installazione icona” non può:

- Avere un'animazione

- Visualizzare una finestra client

- Cambiare aspetto quando si verifica un determinato evento (ad esempio, al ricevimento di un messaggio di posta elettronica)

Questa sezione descrive come creare manualmente i controlli del Pannello principale.

Per informazioni sulla sintassi dei controlli del Pannello principale, vedere la pagina di spiegazioni `dtfpfile(4X)`.

### Definizioni dei controlli del Pannello principale

La definizione di un controllo del Pannello principale ha la seguente struttura:

    CONTROL nome_controllo
    {
       TYPE             tipo_di_controllo
       CONTAINER_NAME   valore
       CONTAINER_TYPE   valore
       altri campi che definiscono l'aspetto e il comportamento del controllo
    }

###
Tipi di controllo

Il campo `
TYPE` della definizione specifica il comportamento base del controllo.

Tipo di controllo | Comportamento del controllo
`icon` | (Valore predefinito). Facendo clic sul controllo o rilasciandovi un file viene eseguita l'azione specificata.
`blank` | Marcatore usato per regolare la spaziatura dei controlli.
`busy` | Spia di occupato. Il controllo lampeggia quando si richiama un'azione.
`client` | Finestra client nel Pannello principale.
`clock` | Orologio.
`date` | Visualizza la data corrente.
`file` | Rappresenta un file. Scegliendo il controllo viene eseguita l'azione predefinita per il file.

### Come creare un nuovo controllo

Questa sezione descrive la procedura generale da usare per definire un controllo e spiega come creare diversi tipi di controlli.

1. Se il controllo deve essere associato a un'azione di tipo `PUSH_ACTION` e/o `DROP_ACTION`, creare le definizioni per queste azioni. Queste azioni saranno eseguite facendo clic sul controllo o rilasciandovi un file.

2. Creare le icone da usare per il controllo.

   Per informazioni sulle dimensioni, sui nomi e sulle posizioni delle icone, vedere sag.cricn.mkr.3.

3. Creare un nuovo file di configurazione per il Pannello principale in:

   - A livello di sistema: `/etc/dt/appconfig/types/lingua/*.fp`

   - A livello personale: DirectoryIniziale`/.dt/types/*.fp`

4. Aggiungere al file la definizione del controllo.

5. Salvare il file.

6. Scegliere “Riavviare la Gestione dello spazio di lavoro” dal menu di controllo dello spazio di lavoro.

#### Creazione di un controllo che esegua un'azione al clic

Per definire il comportamento del controllo, usare i campi seguenti:

- `TYPE`: Impostare su `icon`

- `
  PUSH_ACTION:` Specificare il nome dell'azione da eseguire

Il controllo definito nell'esempio seguente, che verrà aggiunto al pannello secondario Applicazioni personali, esegue un gioco acquistato dall'utente:

    CONTROL Rimbalzo
    {
       TYPE           icon
       CONTAINER_NAME PersAppsSubpanel
       CONTAINER_TYPE SUBPANEL
       ICON           rimbalzo
       PUSH_ACTION    AvviaRimbalzo
       HELP_STRING    “Fare clic per giocare a Rimbalzo.“
    }

Il controllo seguente avvia un'azione di nome CutDisp, e verrà collocato nell'angolo superiore sinistro dell'area dei commutatori.

    CONTROL AvviaCutDisp
    {
       TYPE           icon
       CONTAINER_NAME Switch
       CONTAINER_TYPE SWITCH
       POSITION_HINTS first
       ICON           cutdisp
       HELP_STRING    “Fare clic per eseguire cutdisp.“
       PUSH_ACTION    CutDisp
    }

####
Creazione di un controllo che apra un file

Per definire il comportamento del controllo, usare i campi seguenti:

- `TYPE`: Impostare su `file`

- `
  FILE_NAME:` Specificare il percorso del file da aprire

- `PUSH_ACTION:` Impostare su `Open`

È necessario che sia definita un'azione Open (Aprire) per il tipo di dati associato al file.

Il controllo definito nell'esempio seguente verrà collocato all'estrema destra del Pannello principale. Esso avvia l'Editor di testo con il file di dati `/utenti/elena/rubrica.txt`. L'azione Aprire per i file `*.txt` è già inclusa nel database delle azioni predefinito.

    CONTROL EditPhoneList
    {
       TYPE           file
       FILE_NAME      /utenti/elena/rubrica.txt
       CONTAINER_NAME Top
       CONTAINER_TYPE BOX
       POSITION_HINTS last
       ICON           PhoneBook
       HELP_STRING    "Questo controllo visualizza la rubrica di Elena."
       PUSH_ACTION    Open
    }

#### Creazione di un controllo che funga da area di rilascio

Usare il campo `
DROP_ACTION` per specificare l'azione da eseguire al rilascio di un file sul controllo. L'azione specificata deve poter accettare un file come argomento.

Spesso le definizioni dei controlli includono sia un campo `PUSH_ACTION` che un campo `DROP_ACTION`. È possibile usare la stessa azione per entrambi i campi.

Ad esempio il controllo seguente, situato nel pannello secondario Applicazioni personali, esegue il client X `xwud`, che può accettare un file come argomento.

    CONTROL Avvia_xwud
    {
       CONTAINER_NAME PerAppsSubpanel
       CONTAINER_TYPE SUBPANEL
       POSITION_HINTS 2
       ICON           XwudImage
       PUSH_ACTION    RunXwud
       DROP_ACTION    RunXwud
    }

#### Creazione di un controllo che esegua il monitoraggio di un file

Per definire il comportamento del controllo, usare i campi seguenti:

- `TYPE`: Specificare uno dei seguenti valori:

  `icon` | Usare questo tipo per specificare un'azione di tipo `PUSH_ACTION` e/o `DROP_ACTION` per il controllo `.`
  `file` | Usare questo tipo se si desidera che la scelta del controllo equivalga a un doppio clic sul file nella Gestione di file.

- `ICON` e `
  ALTERNATE_ICON:`Specificare le immagini da usare per indicare il cambiamento o il non-cambiamento di stato del file sottoposto al monitoraggio.

- `
  MONITOR_TYPE`: Descrivere le condizioni per il cambiamento dell'immagine. Usare uno dei seguenti valori:

  `mail` | Il controllo cambia aspetto quando vengono aggiunte nuove informazioni al file.
  `file` | Il controllo cambia aspetto quando il file specificato non è più vuoto.

- `FILE_NAME
  `: Specificare il file da sottoporre a monitoraggio.

Ad esempio, il controllo seguente verifica la presenza o meno di un file di nome `meeting` che deve essere ricevuto attraverso un ftp anonimo. Il controllo verrà collocato alla sommità del pannello secondario Applicazioni personali.

    CONTROL ControlloFile
    {
       TYPE             file
       CONTAINER_NAME   PersonalApps
       CONTAINER_TYPE   SUBPANEL
       POSITION_HINTS   first
       FILE_NAME        /utenti/ftp/meeting
       MONITOR_TYPE     file
       ICON             meeting_no
       ALTERNATE_ICON   meeting_si
    }

#### Creazione di un controllo di esecuzione unica

Un controllo di esecuzione unica verifica se il processo avviato con l'azione specificata in `PUSH_ACTION` è già in esecuzione. Se il processo non è in esecuzione, l'azione viene eseguita. In caso contrario, la finestra associata all'azione viene portata in primo piano nello spazio di lavoro corrente.

Per definire il comportamento del controllo, usare i campi seguenti:

- `PUSH_RECALL`: Impostare su `True`.

- `
  CLIENT_NAME`: Specificare il nome del client associato al controllo.

  Il valore di `CLIENT_NAME` deve corrispondere alla prima stringa (res_name) della caratteristica WM_CLASS della finestra principale dell'applicazione. Per maggiori informazioni, vedere la pagina di spiegazioni `xprop(1)`.

- `PUSH_ACTION`: Descrivere l'azione da eseguire al clic sul controllo.

Ad esempio, il controllo seguente avvia un'unica copia dell'applicazione associata all'azione EditorPersonale.

    CONTROL EditorPersonale
    {
       TYPE           icon
       CONTAINER_NAME Top
       CONTAINER_TYPE BOX
       POSITION_HINTS 15
       PUSH_RECALL    True
       CLIENT_NAME    EditorMigliore
       PUSH_ACTION    AvviaEditorPersonale
       ICON           EdPers
    }

#### Come creare un controllo per una finestra client

Il controllo di una finestra client è una finestra di un'applicazione incorporata nel Pannello principale. Ad esempio, è possibile inserire nel Pannello principale un misuratore del carico del sistema creando un controllo per la finestra client `xload`.

1. Definire il controllo.

   Per definire il comportamento del controllo, usare i campi seguenti:

   - `TYPE`: Impostare su `client`.

   - `
     CLIENT_NAME`: Specificare il client da avviare.

     Il valore di `CLIENT_NAME` deve corrispondere alla prima stringa (res_name) della caratteristica WM_CLASS della finestra principale dell'applicazione. Per maggiori informazioni, vedere la pagina di spiegazioni `xprop(1)`.

   - `
     CLIENT_GEOMETRY`: Specificare la dimensione, in pixel, con cui visualizzare la finestra del client nel Pannello principale.

     Per informazioni su come determinare la dimensione in pixel di una finestra, vedere la pagina di spiegazioni `xwininfo(1)`.

2. Scegliere “Riavviare la Gestione dello spazio di lavoro” dal menu di controllo dello spazio di lavoro.

3. Avviare il client da una riga comandi di un emulatore di terminale.

Ad esempio, il controllo seguente visualizza un misuratore di carico di 30 x 20 pixel.

    CONTROL MisuraCarico
    {
       TYPE            client
       CONTAINER_NAME  Top
       CONTAINER_TYPE  BOX
       CLIENT_NAME     xload
       CLIENT_GEOMETRY 30x20
    }

Se il client non può essere salvato e ripristinato automaticamente nelle sessioni successive, può essere utile configurare il controllo in modo che il client venga avviato al clic sull'icona. Ad esempio, è possibile configurare il controllo MisuraCarico in modo che avvii `xload` aggiungendo alla definizione la riga seguente:

    PUSH_ACTION AvviaXload

e creando l'azione:

    ACTION AvviaXload
    {
       WINDOW_TYPE  NO_STDIO
       EXEC_STRING  /usr/contrib/bin/X11/xload
    }

#### Come animare un controllo

È anche possibile associare a un controllo una sequenza di animazione, da eseguire al clic sul controllo o al rilascio di un file.

Per poter utilizzare una sequenza di animazione, è necessario che il controllo:

- Sia di tipo `icon`

- Sia associato a un'azione di tipo `PUSH_ACTION` o `DROP_ACTION`

  1. Specificare la sequenza di animazione usando il componente `
     ANIMATION`:

         ANIMATION nome_animazione
         {
            immagine_icona [ritardo]
            immagine_icona [ritardo]
            …
         }

     dove ritardo è il tempo che deve trascorrere tra le icone dell'animazione, in millisecondi.

  2. Aggiungere i campi `
     PUSH_ANIMATION` e/o `
     DROP_ANIMATION` alla definizione del controllo. Il loro valore sarà il nome della sequenza di animazione.

Ad esempio, le righe seguenti producono l'animazione del controllo che avvia l'applicazione EditorMigliore. Il ritardo tra le icone è di 300 millisecondi. Nell'esempio si presume che siano state create le icone `frame1`, `frame2`, ecc.

    CONTROL EditorMigliore
    {
       …
       PUSH_ANIMATION AnimazioneEditorMigliore
       …
    }

    ANIMATION AnimazioneEditorMigliore
    {
       frame1 300
       frame2
       …
    }

#### Creazione di un testo di aiuto per i controlli del Pannello principale

Esistono due modi per creare un testo di aiuto per un controllo:

- Inserire una stringa di aiuto nella definizione del controllo.

  La stringa così definita verrà visualizzata richiamando l'aiuto sull'elemento e puntando sul controllo. La stringa non può includere caratteri di formattazione (come titoli) né collegamenti.

  La stringa di aiuto deve essere specificata nella definizione del controllo come segue:

  `
  HELP_STRING stringa_di_aiuto`

- Specificare un nuovo argomento in un volume di aiuto già registrato.

  Gli argomenti dell'aiuto sono informazioni scritte in modo da sfruttare tutte le funzionalità del sistema di aiuto. Per creare un argomento dell'aiuto è necessario l'Help Developer's Kit del desktop.

  Per creare un argomento dell'aiuto occorre specificare il volume e l'ID dell'argomento nella definizione del controllo:

  `
  `

  `HELP_VOLUMEvolume_di_aiuto
  HELP_TOPIC id_argomento`

## Personalizzazione dei commutatori degli spazi di lavoro

I commutatori degli spazi di lavoro possono essere personalizzati in diversi modi:

- Cambiando il numero degli spazi di lavoro

- Cambiando la disposizione dei commutatori

- Cambiando i controlli dei commutatori

### Come cambiare il numero predefinito di spazi di lavoro

- Modificare la seguente risorsa della Gestione dello spazio di lavoro:

  `Dtwm*workspaceCount: n`

Per maggiori informazioni, vedere sag.wmcnf.mkr.6.

### Come cambiare il numero di righe per i commutatori

- Modificare il campo `
  NUMBER_OF_ROWS` nella definizione dell'area dei commutatori (`SWITCH`).

Ad esempio, la definizione seguente imposta un'area dei commutatori contenente tre righe.

    SWITCH Switch
    {
       CONTAINER_NAME nome_riquadro
       NUMBER_OF_ROWS 3
       …
    }

### Come cambiare o aggiungere un controllo nell'area dei commutatori degli spazi di lavoro

1. Creare un file di configurazione del Pannello principale con la definizione del controllo.

   - Specificare che il controllo deve essere inserito nell'area dei commutatori:

         CONTAINER_NAME   Switch
         CONTAINER_TYPE   SWITCH

   - Specificare la posizione del controllo all'interno dell'area dei commutatori:

     `POSITION_HINTS n`

     dove n è un numero intero. Le posizioni sono numerate in sequenza da sinistra a destra e dall'alto in basso. (Per l'area dei commutatori a due righe predefinita, le posizioni sono numerate da 1 a 4.)

2. Creare l'icona per il controllo. La dimensione consigliata è di 16 x 16 pixel.

Ad esempio, la definizione seguente inserisce un controllo del Terminale nell'area dei commutatori.

    CONTROL CommTerminale
    {
       TYPE           icon
       CONTAINER_NAME Switch
       CONTAINER_TYPE SWITCH
       POSITION_HINTS 3
       ICON           Fpterm
       LABEL          Terminale
       PUSH_ACTION    Dtterm
       HELP_TOPIC     FPOnItemTerm
       HELP_VOLUME    FPanel
    }

Il controllo utilizza un'icona predefinita ed è associato allo stesso argomento di aiuto usato dal controllo del Terminale del pannello secondario Applicazioni personali.

## Configurazione generale del Pannello principale

La sintassi di definizione del Pannello principale (`PANEL`) permette di:

- Cambiare la posizione del Pannello principale

- Cambiare la decorazione della finestra

- Impostare l'aspetto e il comportamento generale dei controlli

La descrizione predefinita per il Pannello principale si trova in `/usr/dt/appconfig/types/`lingua`/dtwm.fp`.

Per maggiori informazioni, vedere la pagina di spiegazioni `dtfpfile(4X)`.

### Procedura generale

1. Creare un nuovo file di configurazione per il Pannello principale in `/etc/dt/appconfig/types/`lingua o in DirectoryIniziale`/.dt/types`.

2. Copiare la descrizione predefinita del pannello ( `PANEL`) da `/usr/dt/types/`lingua`/dtwm.fp` nel nuovo file.

3. Editare la descrizione del pannello.

La nuova definizione del pannello avrà la precedenza su quella predefinita.

### Come cambiare la posizione predefinita del Pannello principale

- Per specificare la posizione del Pannello principale, usare il campo `
  PANEL_GEOMETRY` nella definizione del pannello.

  Ad esempio, il pannello seguente viene visualizzato nell'angolo superiore destro dello schermo.

      PANEL PannelloAlto
      {
         PANEL_GEOMETRY -1+1
         …
      }

### Come assegnare un nome ai controlli del Pannello principale

1. Aggiungere la riga seguente alla definizione del pannello:

   `DISPLAY_CONTROL_LABELS True`

2. Aggiungere un campo `LABEL` per ogni controllo.

Se non viene specificato un campo `LABEL`, verrà usato il valore nome_controllo.

### Come cambiare l'azione di clic sui controlli

- Per specificare il modo in cui eseguire l'azione specificata in `PUSH_ACTION`, usare il campo `
  CONTROL_BEHAVIOR` nella definizione del pannello. I valori possibili per questo campo sono:

  `single_click` | L'azione specificata in `PUSH_ACTION` viene eseguita facendo clic sul controllo
  `double_click` | L'azione specificata in `PUSH_ACTION` viene eseguita facendo doppio clic sul controllo

### Come creare un Pannello principale interamente nuovo

Quando si desidera eseguire numerose modifiche, può essere preferibile creare un nuovo Pannello principale.

Per evitare conflitti con i componenti del Pannello principale predefinito, occorrerà usare nomi nuovi per il pannello (PANEL) e per gli altri contenitori.

1. Creare il componente `PANEL` per il nuovo Pannello principale. Assegnare al pannello un nome unico:

       PANEL nome_pannello_principale
       {
          …
       }

2. Creare i riquadri e i controlli usando nomi nuovi per i contenitori.

   Per utilizzare i componenti esistenti, copiare le definizioni e cambiare il valore di `CONTAINER_NAME`.

3. Scegliere “Riavviare la Gestione dello spazio di lavoro” dal menu di controllo dello spazio di lavoro.

### Esempio di creazione di un Pannello principale su tre righe

L'esempio seguente modifica il Pannello principale predefinito in modo che i controlli appaiano disposti su tre righe.

1. Copiare `/usr/dt/appconfig/types/`lingua`/dtwm.fp` in DirectoryIniziale`/.dt/types/PannelloPersonale.fp`. Assegnare al file l'autorizzazione di scrittura.

   Questo è il file che occorrerà editare per creare il nuovo Pannello principale.

2. Cambiare il nome del Pannello principale:

   `PANEL NuovoPannelloPrinc`

3. Cambiare il nome del riquadro Top ed editare il nome del relativo contenitore:

       BOX NuovoPannelloPrincAlto
       {
          CONTAINER_NAME NuovoPannelloPrinc
          POSITION_HINTS first
          …
       }

4. Aggiungere le definizioni dei riquadri per le righe centrale e inferiore:

       BOX NuovoPannelloPrincMedio
       {
          CONTAINER_NAME   NuovoPannelloPrinc
          POSITION_HINTS   second
       }

       BOX NuovoPannelloPrincBasso
       {
          CONTAINER_NAME   NuovoPannelloPrinc
          POSITION_HINTS   second
       }

5. Impostare il campo `CONTAINER_NAME` dei seguenti controlli su `NuovoPannelloPrincAlto`:

   - Orologio

   - Data

   - Cartella iniziale

   - Editor di testo

   - Gestione posta

6. Impostare il campo `CONTAINER_NAME` dei seguenti controlli su `NuovoPannelloPrincBasso`:

   - Stampante

   - Stili

   - Applicazioni

   - Aiuto

   - Cestino

7. Impostare il campo `CONTAINER_NAME` dell'area dei commutatori su `NuovoPannelloPrincMedio`.

8. Impostare la risorsa:

   `Dtwm*frontPanel*name: NuovoPannelloPrinc`

9. Scegliere “Riavviare la Gestione dello spazio di lavoro” dal menu di controllo dello spazio di lavoro.