Change log
Da BUC Wiki.
Indice |
Versione 0.5.2
La versione 0.5.2 non è altro che un bugfix per la 0.5.1, che presentava un fastidioso bug per la combobox soprattutto nell'utilizzo di BUC su Ubuntu 9.04.
Versione 0.5.1
Ci scusiamo con tutti coloro che hanno avuto problemi dopo aver installato la versione 0.5. Purtroppo la serie di novità è risultata TROPPO copiosa, e la riscrittura del 70% del codice di buc ha generato dei bug imprevisti che sono riusciti ad oltrepassare i test preliminari... Tutti questi bachi sono stati chiusi con la versione 0.5.1, che oltre a presentarsi come un bugfix per la 0.5 inserisce anche alcuni gradi di libertà sulla combinazione dei tag. Tutte queste modifiche sono state documentate nella pagina "tutti i tags", completamente aggiornata secondo i canoni della 0.5.1: ve ne consiglio la lettura, sia che siate dei neofiti desiderosi di apprendere, sia che siate già dei validi scrittori di script :) Ovviamente, se ci è sfuggito ancora qualcosa... segnalatecelo sul forum e risolveremo al più presto ^_^
Versione 0.5
Finalmente è disponibile la versione 0.5 di BUC, e come sempre è accompagnata da una copiosa serie di novità:
Motore XML nuovo di pacca
La principale innovazione è stata eseguita sul motore di caricamento dei files, finalmente reso un VERO motore XML... questa modifica, apparentemente di poca importanza, consentirà invece agli sviluppatori più smaliziati di realizzare pagine molto più complesse rispetto al passato, in quanto è possibile combinare i vari tag in modi nuovi ed inaspettati.
Ad esempio, è possibile inserire una casella di testo all'esterno dei tab:
<?xml version="1.0"?> <config> <label>echo "CIAO!!"</label> <tab> <title>echo "tab1"</title> <label>echo "testo interno"</label> </tab> </config>
oppure, volendo si potrebbero inserire due tab l'uno dentro l'altro:
<?xml version="1.0"?> <config> <tab><title>echo "Super tab"</title> <tab><title>echo "Inner tab"</title> <button title="ecco" code=""/> </tab> </tab> </config>
insomma, le possibilità sono pressochè infinite e, soprattutto, possono finalmente andare oltre a ciò che io stesso (come creatore di buc) sono in grado di prevedere.... quindi forza, stupitemi ;) (P.S.: come avete notato ora sono ammessi anche i tag vuoti, come questo: <button code=""/>)
Nuova gestione degli attributi
Nelle versioni precedenti vi sarà sicuramente capitato di essere stati costretti a dover scrivere qualche script "inutile", come il seguente:
<tab> <title>echo "Impostazioni"</title> </tab>
in fondo, perchè è necessario utilizzare uno script?? Il titolo di questo tag non dovrà essere mai reso modificabile, non ce n'è alcun bisogno di tutto questo testo... perchè non fare una cosa del genere?
<tab title="Impostazioni"/>
molto più semplice, no? peccato che, in altri casi, possa essere necessario realizzare il procedimento opposto! Ad esempio, se volessimo inserre nel titolo di un pulsante il contenuto di una variabile, sarebbe necessario poter ottenere qualcosa di simile:
<button> <title>echo $TITOLO</title> <code>echo "Ciao! Mi hai appena premuto!"</code> </button>
Quindi, viste tutte queste necessità, come fare a realizzare tutto ciò in modo omogeneo, tenendo conto di ogni caso particolare? BUC 0.5 risolve il problema così: scrivere questo:
<button title="Titolo"> echo "ciao" </button>
questo
<button> <title>echo "Titolo"</title> <code>echo "ciao"</code> </button>
oppure questo
<button title="Titolo" code="echo ciao"/>
è assolutamente indifferente, ed il risultato prodotto sarà esattamente lo stesso. Bisogna però tenere conto di alcune condizioni:
- Il parametro espresso come attributo è visto come testo "statico", quindi non contiene script (<button title="Titolo">)
- Il parametro espresso come sottotag è interpretato come uno script bash
- Fa eccezione il parametro "code": se espresso come attributo conterrà comunque uno script, dove però SONO AMMESSI i caratteri < e >, mentre è VIETATO il carattere ", usato per chiudere lo script. Se espresso invece come sottotag viene interpretato sempre come script bash, ma il carattere vietato è <, mentre è nuovamente ammesso il carattere ".
- Il parametro "code", se usato come sottotag, può essere omesso SE E SOLO SE è l'unico sottotag utilizzato (detta terra terra, se usate altri sottotag dovete aggiungere anche <code> e </code> all'inizio ed alla fine dello script, se invece non ne usate potete continuare a scrivere script come avete sempre fatto ;)
Ci tengo infine a farvi notare che utilizzare la notazione "statica" aiuterà anche a diminuire i tempi di caricamento, migliorando le prestazioni e riducendo il numero di operazioni su disco che buc è tenuto a fare.
Aggiunti i tag di layout
Con l'introduzione del nuovo motore XML sono nate nuove possibilità di interazione tra i tag... possibilità che potrebbero essere sfruttate, ad esempio per realizzare nuove forme di layout, finalmente diverse dagli attuali schemi "a scontrino", in cui tutti gli elementi sono posizionati l'uno sotto l'altro senza alcuna possibilità di modificare questo comportamento.
I nuovi tag di gestione del layout sono sostanzialmente due:
- <hlayout>: tutti i tag elencati successivamente sono affiancati orizzontalmente, da sinistra a destra.
- <vlayout>: tutti i tag elencati sono posizionati verticalmente, l'uno sotto l'altro (in pratica non fa altro che ripristinare il comportamento di default di BUC dentro un hlayout
Con questi due semplici tag è possibile realizzare liberamente quasi qualunque tipo di interfaccia... nelle versioni successive verrà aggiunto un nuovo tipo di <...layout>, e potremo eliminare quel "quasi" ;)
Oltre ai tag sopracitati è stato aggiunto un nuovo tipo di tag, la cui utilità risulterà particolarmente evidente nei dispositivi più piccoli o con le risoluzioni più basse (come gli EEEpc, ad esempio): Il tag si chiama <scrolllayout>, e permette di inserire due barre di scorrimento (orizzontale e verticale) nel caso in cui la dimensione delle finestra non sia sufficiente a visualizzare tutti i controlli.
Aggiunto il tag checkbox
Questo nuovo tag funziona in modo analogo alle textbox: è infatti necessario impostare l'attributo "var" per specificare la variabile in cui memorizzare il valore della checkbox, valore che sarà pari a 0 nel caso in cui la casella non sia barrata, mentre sarà pari ad 1 dopo averla barrata. Una caratteristica interessante di questo tag rappresenta l'assenza di uno script <code>, come nei casi precedenti: per specificarne il contenuto infatti è necessario sfruttare l'attributo text, in questo modo:
<checkbox var="checked" text="Selezionami!"/>
oppure, ovviamente, in questo:
<checkbox var="checked"> <text> echo "Selezionami!" </text> </checkbox>
Aggiunto il tag <img>
A grande richiesta fa finalmente la comparsa sui nostri schermi il tag IMG: come potere immaginare dal nome, questo tag consente di visualizzare un'immagine, un logo, e così via. Il calcolo del path per le immagini funziona in modo analogo a quello per le icone delle liste, per cui se specificate un indirizzo relativo (o solo il nome dell'immagine) questa verrà cercata sia nella cartella in cui risiede lo script che nella cartella di buc, la /usr/local/buc. Il tag img possiede anche un attributo che permette di specificarne l'allineamento, se necessario. Ecco un esempio del suo utilizzo:
<img src="immagine.png" align="center"/>
Ovviamente, solitamente questo tag si utilizzerà senza specificarne un contenuto, e quindi aggiungendo lo / al fondo. Mi raccomando, ricordatevi lo slash, perchè altrimenti il parser si arrabbierà, e dopo aver viaggiato per il codice alla ricerca di un introvabile tag di chiusura </img> si stuferà, terminando bruscamente il programma ed etichettando lo script come "malformato" ^_^
Modificato lo script di esecuzione di BUC
Questa è una caratteristica mirata a semplificare gli script durante l'esecuzione di file mc multipli: d'ora in avanti, infatti, tutti gli script interni ad un file mc saranno eseguiti COME SE si trattasse di script presenti nella stessa cartella di appartenenza del programma. Se, quindi, si desiderasse lanciare uno script esterno dentro un file mc sarebbe sufficiente posizionare script e file mc nella stessa cartella, per poi scrivere qualcosa di simile:
<button title="Run"> echo "Running..." ./externalscript </button>
senza essere costretti a specificare dei percorsi assoluti o ricorrere a script complessi per verificare la cartella di appartenenza del file mc.
Divertitevi :)
Matteo (ma1069)
Versione 0.4.1
Dopo settimane di sviluppo siamo lieti di annunciarvi l’uscita della versione 0.4.1 e in concomitanza vi annunciamo, inoltre, l’apertura del Repository per Ubuntu 64bit (altre a quello già attivo per 32bit):
deb http://buc.billera.eu/ubuntu64/ binary/
La nuova versione di BUC introduce, rispetto alla versione precedente, piccole ma utili innovazioni: alcune sono state eseguite "sotto il cofano": il più importante tra i quali è che la nuova versione non necessità più la presenza della shell bash di default: questo significa che, se avete ubuntu, potete dare nuovamente un'accelerata all'avvio con il comando:
ln -sf /bin/dash /bin/sh
Oltre a questo sono stati corretti diversi bug nel caricamento degli script e, soprattutto, è stato aggiunto il tag <iconlist>: questo tag consente di creare una casella piena di icone, a cui può essere associato del codice eseguito quando viene fatto il doppio click su una delle icone, o cose simili. Per mostrarvi come funziona non c'è niente di meglio che un semplice esempio:
<config> <tab> <title>echo "Paciocchi con le icone"</title> <iconlist var="scelta"> echo "icona 1" echo "icona 2" echo "icona 3" </iconlist> </tab> </config>
Ecco qua la vostra prima schermata con le icone: piuttosto semplice, no? In questo caso la iconlist funziona esattamente come una combobox: ogni riga dello script viene usato come titolo per un'icona, mentre il titolo dell'icona selezionata viene memorizzato nella variabile $scelta. Se poi preferite posizionare il testo a fianco delle immagini, piuttosto che sotto, potete utilizzare l'attributo mode="list": in questo modo realizzarete una lista vera e propria:
<config> <tab> <title>echo "Paciocchi con le icone"</title> <iconlist var="scelta" mode="list"> echo "icona 1" echo "icona 2" echo "icona 3" </iconlist> </tab> </config>
Queste icone, purtroppo, sono tutte uguali... e neanche troppo simpatiche! Non ci sarebbe il modo di specificare un'immagine diversa, magari che possa cambiare tra un'icona e l'altra? Ma certo che c'è! Per utilizzare questo sistema, però, siamo costretti a perdere la generazione dinamica delle icone, ed a sfruttare la versione "statica" dell'iconlist
<config> <tab> <title>echo "Paciocchi con le icone"</title> <iconlist var="scelta"> <icon href="pc.png"> echo "Icona 1" </icon> <icon href="testo.png"> echo "Icona 2" </icon> <icon href="info.png"> echo "Icona 3" </icon> </iconlist> </tab> </config>
In questo modo è possibile specificare un'immagine differente per ogni icona... lo svantaggio però è che si perde la possibilità di creare un numero arbitrario di icone, specificandole una per una all'interno dello script mc. Specificando solo il nome dell'immagine, come nell'esempio, BUC si metterà a cercarla in due posti diversi: innanzitutto la cercherà nella cartella in cui è presente anche lo script, ma poi andrà a cercare l'immagine nella libreria della cartella /usr/local/buc/icons: vi consiglio di darci un'occhiata per vedere se le icone fanno al caso vostro.
Non è finita qui poi: esiste un comportamento che tutti siamo abituati a tenere di fronte ad un'icona: farci click sopra due volte e vedere cosa succede. Ovviamente esiste la possibilità di specificare uno script da eseguire in questo caso, e viene aggiunto in questo modo:
<config>
<tab>
<title>echo "Paciocchi con le icone"</title>
<iconlist var="scelta">
<icon href="pc.png">
echo "Icona 1"
</icon>
<icon href="testo.png">
echo "Icona 2"
</icon>
<icon href="info.png">
echo "Icona 3"
</icon>
</iconlist>
<ondoubleclick>
if [ $scelta = "Icona 1" ]
then
echo "Hai scelto icona uno"
else
if [ $scelta = "Icona 2" ]
then
echo "Hai appena cliccato sull'icona due"
else
echo "E' rimasta solo l'icona tre"
fi
fi
</ondoubleclick>
<textlog></textlog>
</tab>
</config>
Il tag oundoubleclick si riferisce sempre all'ultima iconlist creata, e va piazzato immediatamente dopo. Non è possibile inserirlo all'interno del tag iconlist a causa di alcuni limiti del parser xml presente su BUC. Tenete però presente che questo comportamento verrà rivisto nella prossima versione, non appena sarà aggiornato il parser: dalla 0.5 in poi il tag ondoubleclick sarà posizionabile dentro la iconlist e persino dentro ogni icon, per specificare uno script diverso a seconda dell'icona premuta. Non sarebbe però carino se si potesse variare la dimensione delle icone? Non tutti apprezzano le icone "giganti" presenti nella libreria...
Se vi servisse, potete sfruttare gli attributi iconwidth ed iconheight per specificare la dimensione massima delle icone: ho detto massima in quanto non è assolutamente possibile ingrandire un'immagine più delle sue dimensioni di partenza, per cui è inutile specificare un'iconwidth e un'iconheight con dei valori maggiori rispetto a quelli dell'immagine in quanto BUC semplicemente li ignorerà.
Spero abbiate gradito le novità, io personalmente non vedevo l'ora di poter inserire un po' di colore negli script di BUC...
Saluti,
Matteo (ma1069)
Versione 0.4
Nella versione 0.4 sono stati aggiunti due nuovi e importanti tag:
- <file>
- <global>
<file>
Il tag file permette di inserire nella propria applicazione una casella di testo, con a lato un pulsante che apre una finestra di dialogo per la selezione di files. E’ possibile personalizzare questo comando usando gli attributi ‘filter’ e ‘mode’ per specificare rispettivamente un filtro di selezione dei files e per indicare se è necessario selezionare files già esistenti, nuovi files oppure cartelle. I valori ammessi per ‘mode’ sono:
* mode = “open” (seleziona solo files esistenti) * mode = “save” (seleziona anche nuovi files) * mode = “dir” (seleziona directory)
Filter, invece, sfrutta questa sintassi:
* filter = “[nome del filtro](*.[estensione] *.[estensione] …)”
Per capire meglio come funziona facciamo un esempio:
<label> echo “Seleziona l’immagine di partenza” </label> <file var=”sorgente” mode=”open” filter=”Immagini(*.jpg *.png)”> </file> <label> echo “Seleziona il nuovo archivio di destinazione” </label> <file var=”destinazione” mode=”save” filter=”Archivio tar.gz(*.tar.gz);;Archivio zip(*.zip)”> </file>
Il primo tag ‘file’ permette di selezionare un file immagine esistente: per questo il ‘mode’ è open (cioè non permette di selezionare un file inesistente); il secondo, invece, permette di selezionare il percorso ed il nome del file da creare, perciò ‘mode’ è settato a ’save’.Inoltre, il secondo ‘file’ permette di scegliere se salvare in formato .tar.gz oppure in formato .zip, ed il doppio ;; serve proprio per separare i due filtri.
<global>
Questo simpatico tag permette di specificare una variabile di ambiente, utilizzabile in tutti gli script successivi, in modo analogo ad una textbox, con la sola differenza che è invisibile all’utente finale (e soprattutto non modificabile). L’utilizzo è piuttosto semplice:
<global var=”segreto”> echo “HardCoded” </global> <label> echo “Inserisci il codice segreto:” </label> <text var=”codice”> </text> <button title=”OK”> if [ $segreto = $codice ] then echo “Hai indovinato!” else echo “Hmm… riprova! fi </button> <textlog></textlog>

