mag 16 2009
[BUC - Scripting] Realizzare una combobox dinamica

Grazie al tag < combobox > è possibile inserire in un proprio applicativo mc una lista di selezione, tramite la quale si da la possibilità all’utente di definire una variabile scegliendo il valore fra varie voci.

E’ utile a volte rendere questa lista dinamica e modificabile in base alle scelte dell’utente.
Il metodo che ho utilizzato io per far ciò è molto semplice:
<tab>
<title>echo "Aggiungi valore alla combobox"</title>
<label>
echo "Inserisci il nome del file"
</label>
<text var="nome">
echo ""
</text>
<label>
echo "Inserisci la stringa all'interno del file"
</label>
<text var="stringa">
echo ""
</text>
<button title="Salva">
if [ -s $HOME/cartella/ ]
then
cd $HOME/cartella/
touch $nome
echo "$stringa" > $HOME/cartella/$nome
else
mkdir $HOME/cartella/
cd $HOME/cartella/
touch $nome
echo "$stringa" > $HOME/cartella/$nome
fi
if [ -e $HOME/cartella/$nome ]
then
zenity --info --title=buc --text="Operazione completata.
Per visualizzare le modifiche riavvia l'applicativo"
else
zenity --error --title=buc --text="Errore"
fi
</button>
</tab>
Questo codice non fa altro che creare un file di testo, il cui nome dipende dal valore che l’utente darà alla variabile $nome, con all’interno la stringa di comando, che dipende dal valore che si darà alla variabile $stringa.
<combobox var="scelta">
if [ -s $HOME/cartella/ ]
then
ls $HOME/cartella/ -A > .temp
cat .temp
rm .temp
else
echo "Nessun valore"
fi
</combobox>
La < combobox > successivamente per far vedere questa lista non farà altro che fare un ls -A ( elenca i file uno sotto l’altro) della cartella salvando il risultato in un file temporaneo che verrà successivamente utilizzato per far vedere la lista all’utente.
<button title="Utilizza la selezione">
if [ -e $HOME/cartella/$scelta ]
then
a=`cat cat $HOME/cartella/$scelta 2> /dev/null`
$a
else
zenity --error --title=buc --text="Errore"
fi
</button>
Per utilizzare la stringa di comando, che è all’interno del file che abbiamo utilizzato per stilare la lista, il codice genera una variabile $a e ad essa verrà associato come valore ciò che è scritto all’interno di uno dei file contenuto in $HOME/cartella/ scelto dall’utente.
Questo codice io l’ho utilizzato per realizzare l’applicativo eRadio.mc
Credo che sia utile, per far capire bene il funzionamento di questo codice, inserire la porzione di codice che permette di aggiungere nuove radio nell’applicativo.
<tab>
<title>echo "Aggiungi Radio"</title>
<label>
echo "Inserisci il nome della radio"
</label>
<text var="nome">
echo ""
</text>
<label>
echo "Inserisci il link per ascoltare in streaming la radio"
</label>
<text var="streaming">
echo ""
</text>
<button title="Salva la nuova Radio">
if [ -s $HOME/.radio-BUC/ ]
then
cd $HOME/.radio-BUC/
touch R-$nome
echo "$streaming" > $HOME/.radio-BUC/R-$nome
else
mkdir $HOME/.radio-BUC/
cd $HOME/.radio-BUC/
touch R-$nome
echo "$streaming" > $HOME/.radio-BUC/R-$nome
fi
if [ -e $HOME/.radio-BUC/R-$nome ]
then
zenity --info --title=buc --text="Operazione completata.
Per visualizzare le modifiche riavvia l'applicativo"
else
zenity --error --title=buc --text="Errore: segnala questo errore a smat@sicilinux.org"
fi
</button>
</tab>
<tab>
<title> echo "Radio Personalizzate" </title>
<combobox var="radiop">
if [ -s $HOME/.radio-BUC/ ]
then
ls $HOME/.radio-BUC/ -A > .temp
cat .temp
rm .temp
else
echo "Nessuna Radio Aggiunta"
fi
</combobox>
<button title="Ascolta la Radio in background">
if [ -e $HOME/.radio-BUC/$radiop ]
then
streamingp=`cat cat $HOME/.radio-BUC/$radiop 2> /dev/null`
mplayer -cache 128 $streamingp &
else
zenity --error --title=buc --text="Errore"
fi
</button>
<button title="Ascolta la Radio">
if [ -e $HOME/.radio-BUC/$radiop ]
then
streamingp=`cat cat $HOME/.radio-BUC/$radiop 2> /dev/null`
xterm -e mplayer -cache 128 $streamingp &
else
zenity --error --title=buc --text="Errore"
fi
</button>
<button title="Spegni la Radio">
killall mplayer
</button>
<button title="Cancella la Radio">
if [ -e $HOME/.radio-BUC/$radiop ]
then
rm -f $HOME/.radio-BUC/$radiop
if [ -e $HOME/.radio-BUC/R-* ]
then
echo
else
rm -rf $HOME/.radio-BUC/
fi
zenity --info --title=buc --text="Operazione completata.
Per visualizzare le modifiche riavvia l'applicativo"
else
zenity --error --title=buc --text="Errore"
fi
</button>
</tab>
Esprimi il tuo giudizio con un commento oppure condividilo tramite i pulsanti in basso :)

















