giovedì 25 maggio 2017

DBLib e DB

Per chi è interessato ai database Andre Garzia ha sviluppato la libreria aggintiva DBLib che funziona anche su dispositivi mobili.
Mentre per chi è interessato ai database NoSQL c'è la libreria datastorage lib
Per più informazione potete leggere la seguente pagina: http://andregarzia.com/en/projects/dblib
oppure i sorgente su gitHub: https://github.com/soapdog/livecode-dblib

martedì 23 maggio 2017

CouchDB

Livecode è compatibile con il database CouchDB, qui potete trovare una guida: http://livecode.wikia.com/wiki/CouchDB
CouchDB è un database a documenti stile NoSQL, quindi non ha tabelle, ma solo documenti con dati.
Ogni documento può conentere un numero infinito di dati e sotto documenti.
Il vantaggio del NoSQL è quando non si sa con cosa si avrà a che fare. Ad esempio un negozio che aggiunge oggetti con proprietà sempre diverse: colore, grandezza, peso, luminosità, velocità, ecc. Grazie a NoSQL, quando arriva una nuova proprietà da inserire, non bisogna modificare le tabelle.

lunedì 22 maggio 2017

Installer linux

Ho appena creato i pacchetti DEB e RPM per installare livecode su linux a 64bit, si possono scaricare da qui: http://www.maxvessi.net/livecode/linux/
Rispetto all'installatore classico sono più semplici da installare e risolvono qualche bug.
Se vi servono per qualche altro formato fatemi sapere.

giovedì 18 maggio 2017

SVG widget a colori

La Ah Software ha creato un widget SVG che riprende il modello in bianco e nero di livecode, ma si può usare a colori!
Ecco un esempio:
Vi ricordo che la grafica SVG è vettoriale, e non perde definizione nè ingrandendola, nè rimpicciolendola.
Per fare una grafica in SVG ci sono tantissimi programmi, anche InkScape, che convertono quello che fate in SVG e poi vi basterà impostare la proprietà iconPathsTagData alla stringa SVG.
I file SVG sono solo una stringa di testo del tipo: <rect x="360" y="47.6" width="80" height="152"...
Potete scaricare il widget da qui 
Una volta scaricato, vi basterà scompattare il file ed utilizzare il Tools -> Extension builder per installare il widget.
Potete contattare l'inventore a: ahsoftware@ahsoftware.net

venerdì 12 maggio 2017

Gli array, una precisazione

Ho sempre usato gli array di livecode, monodimensionale e pluridimensionali, ma ancora non mi ero accorto di alcune peculiarità.
Se inserite un valore in un array tipo arr[Rossi] e poi inserite un secondo valore in arr[Rossi][Mario], ciò che è contenuto in arr[Rossi] si cancella perchè arr[Rossi] diventa un contenitore di un altro array: il suo secondo livello, con chiavi e valori.

Esempio

put "cognome" into arr["Rossi"]
put "nome marito" into arr["Rossi"]["Mario"]
put "nome moglie" into arr["Rossi"]["Anna"]

il valore di arr["Rossi"] non è più la stringa "cognome", ma un array con le chiavi "Mario" e "Anna".
Questo modalità può tornare utile quando dobbiamo lavorare solo una parte di un array, perchè così possiamo inviarne solo una parte, ad esempio:

put "nome marito" into arr["Rossi"]["Mario"]
put "nome moglie" into arr["Rossi"]["Anna"]
elencaArr arr["Rossi"]

on elencaArray tArr
   put the keys of tarr
end elencaArray

mostrerà solo Mario e Anna, perchè il messaggio elencaArray vede solo:
  • tArr["Mario"]
  • tArr["Anna"]
Se avete ulteriori dubbi, chiedeteli nei commenti.

mercoledì 10 maggio 2017

Tree view widget

Oggi vediamo come funziona il misterioso controllo tree view. Si tratta di un controllo per fare le liste ad albero.
Queste liste possono avere tutte le nidificazioni che volete. Vediamo nel dettaglio come fare. Trascinate nel vostro programma il tree view:
Ci basta settare la proprietà ArrayData per creare il nostro albero. Mandiamo questi comandi:


set the readOnly of widget "tree View" to true
put empty into temp[Rossi][Mario]
put empty into temp[Rossi][Lisa]
put empty into temp[Rossi][Mario]["Gatto di Mario"]
put empty into temp[Rossi][Lisa]["Cane di Lisa"]   
put empty into temp[Verdi][Luigi]
put empty into temp[Verdi][Anna]
put empty into temp[Verdi][Luigi]["Gatto di Luigi"]
put empty into temp[Verdi][anna]["Cane di Anna"]
set the arrayData of widget "Tree View" to temp
e otterrete questo:


abbiamo impostato anche la proprietà readOnly su true così non possiamo modificare le scritte o aggiungerci elementi cliccandoci sopra.
Volendo è possibile aggiungere anche un valore, si può fare solo all'ultima voce si un ramo, se il valore di una voce è diverso da empty, allora diventa l'ultima voce di quel ramo.
Ad esempio il codice:

put the arraydata of widget "tree view" into temp
put "Lampo" into temp[Verdi][Anna]["Cane di Anna"]
put "(marito)" into temp[Rossi][Mario]
set the arrayData of widget "Tree view" to temp

il risultato è questo:
Come vedete la voce finale del ramo il "Cane di Anna" ha una seconda voce "lampo", mentre avendo messo un valore a "Mario" la sotto voce "gatto di Mario" è sparita, perchè le voci che hanno un valore diventano la fine di un ramo.
Il mio consiglio è di non dare mai un valore alle voci, usate la voce stessa, che può contenere anche degli spazi, se usate le virgolette, per mettere più informazioni su una sola riga.
Vi ricordo che potete scegliere anche il tipo di ordinamento con SortType and SortOrder.

martedì 9 maggio 2017

Intercettare i pulsanti speciali (Ins, Home, PgSU, PgUp, ecc...)

In livecode per intercettare un pulsante di solito usiamo il messaggio keyUp, ma questo messaggio non gestisce tutto.
Ecco una lista di messaggi utili:
  • ArrowKey  per le frecce della tastiera
  • ControlKey  per il tasto Control ed eventuali combinazioni
  • FunctionKey per i tasti F1, F2, F3 e così via...
  • enterKey  per il tasto invio grosso della tastiera
  • returnKey per il tasto invio piccolo del tastierino numerico
  • deleteKey per il tasto Canc
  • backspaceKey  per il tasto backspace sopra l'invio grosso
  • CutKey  il taglia, cioè CTRL+X o qualunque cosa sia in quel momento
  • copyKey  il copia, cioè CTRL+C o qualunque cosa sia in quel momento
  • PasteKey  l'incolla, cioè CTRL+P o qualunque cosa sia in quel momento
  • TabKey  il tasto TAB
  • OptionKey  il tasto ALT  (o META su Mac)
  • rawKeyDown / rawkeyUp  la versione down o up differiscono se allo schiacciare del pulsante o al rilascio dopo averlo schiacciato. Questi messaggi ricevono il segnale da qualsiasi pulsante e vi restituisce il numero. Ecco alcuni numeri utili:
    • Ins: 65379
    • Home: 65360
    • Canc: 65535
    • Fine: 65367
    • Pag Up: 65365
    • Pag down: 65366 
Se vi servono ulteriori informazioni, chiedete pure nei commenti.

lunedì 8 maggio 2017

Migliorata barra della ricerca

Finalmente la barra della ricerca nella colonna qui a destra dovrebbe funzionare correttamente.
Provatela anche voi e ditemi nei commenti che vi sembra.