Questa sezione descrive la procedura generale da usare per definire un controllo e spiega come creare diversi tipi di controlli.
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.
Creare le icone da usare per il controllo.
Per informazioni sulle dimensioni, i nomi e le posizioni delle icone, vedere File grafici delle icone.
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
Aggiungere al file la definizione del controllo.
Salvare il file.
Scegliere “Riavvia la Gestione dello spazio di lavoro” dal menu di controllo dello spazio di lavoro.
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 }
Per definire il comportamento del controllo, usare i campi seguenti:
TYPE: impostare su file
PUSH_ACTION: impostare su Open
È necessario che sia definita un'azione Open (Apri) 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 Apri per i file *.txt è già inclusa nel database delle azioni predefinito.
CONTROL ModificaRubrica { TYPE file FILE_NAME /utenti/elena/rubrica.txt CONTAINER_NAME Top CONTAINER_TYPE BOX POSITION_HINTS last ICON PhoneBook HELP_STRING "Controllo che visualizza la rubrica di Elena." PUSH_ACTION Open }
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 ImmagineXwud PUSH_ACTION AvviaXwud DROP_ACTION AvviaXwud }
Per definire il comportamento del controllo, usare i campi seguenti:
TYPE: specificare uno dei seguenti valori:
icon: usare questo valore per specificare un'azione di tipo PUSH_ACTION e/o DROP_ACTION per il controllo.
file: usare questo valore 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 ControlloAgendar { 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 }
Un controllo ad 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 (nome_ris) della caratteristica WM_CLASS della finestra principale dell'applicazione. Per maggiori informazioni, vedere la pagina man 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 Ed_pers }
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.
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 (nome_ris) della caratteristica WM_CLASS della finestra principale dell'applicazione. Per maggiori informazioni, vedere la pagina man xprop(1).
Scegliere “Riavvia la Gestione dello spazio di lavoro” dal menu di controllo dello spazio di lavoro.
Avviare il client da una riga di comando di un emulatore di terminale.
Ad esempio, il controllo seguente visualizza un misuratore di carico di 30×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 StartXload { WINDOW_TYPE NO_STDIO EXEC_STRING /usr/contrib/bin/X11/xload }
È 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
Specificare la sequenza di animazione usando il componente ANIMATION:
ANIMATION nome_animazione { ANIMATION icona1 [ritardo_in_ms] ANIMATION icona2 [ritardo_in_ms] … }
dove icona1, icona2 ecc. sono i nomi delle icone e ritardo_in_ms è il tempo che deve trascorrere tra le icone dell'animazione, in millisecondi. Il ritardo predefinito è di 200 millisecondi.
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 … }
Esistono due modi per creare un testo di guida per un controllo:
Inserire una stringa di guida nella definizione del controllo.
La stringa così definita verrà visualizzata richiamando la guida sull'elemento e puntando sul controllo. La stringa non può includere caratteri di formattazione (come titoli) né collegamenti.
La stringa di guida deve essere specificata nella definizione del controllo come segue:
HELP_STRING testo_della_guida
Specificare un nuovo argomento in un volume della guida già registrato.
Gli argomenti della guida sono informazioni scritte in modo da sfruttare tutte le funzionalità del sistema di guida. Per creare un argomento della guida è necessario l'Help Developer's Kit del desktop.
Per creare un argomento della guida occorre specificare il volume e l'ID dell'argomento nella definizione del controllo:
HELP_VOLUME volume_della_guida HELP_TOPIC id_argomento