IT/Calc/Add-In/Simple Calc Add-In (Italian)
Progetto "Estensioni" per OOo
Si prega di consultare le |
---|
Categorie: Pagine: |
Estensioni sul sito principale
Visualizza o modifica questo template.
|
Un semplice add-in per Calc
Questa è una guida passo passo su come scrivere un semplice componente (un add-in di Calc) per OpenOffice.org (OOo) utilizzando il linguaggio C++. Anche se le istruzioni qui presenti sono scritte per GNU/Linux, questa guida può fornire un'idea su come scrivere componenti anche per altri sistemi operativi.
Requisiti
Assicuratevi di aver installato un compilatore C++ e le librerie di sviluppo C standard. È preferibile utilizzare il GNU C++ e le librerie di sviluppo GNU C. La maggior parte delle distribuzioni GNU/Linux li hanno già installati o li forniscono all'interno del loro repository. Per esempio per sistemi Debian GNU/Linux e derivati i pacchetti sono i seguenti: g++, libc6-dev. Per installarli:
# apt-get install g++ libc6-dev
Occorre inoltre avere installato anche OOo 2.0 o superiore. La maggior parte delle distribuzioni GNU/Linux lo hanno già di default. Per esempio per sistemi Debian GNU/Linux e derivati è possibile visualizzare tutti i pacchetti di OpenOffice.org presenti con il seguente comando:
$ apt-cache search openoffice
I pacchetti necessari dovrebbero essere: openoffice.org, openoffice.org-calc
# apt-get install openoffice.org openoffice.org-calc
Il pacchetto principale per questo corso è OOo SDK che può essere reperito probabilmente dal repository della propria distribuzione GNU/Linux o da http://download.openoffice.org/680/sdk.html. Per Debian GNU/Linux e derivate dovrebbe essere il pacchetto openoffice.org-dev (la documentazione è openoffice.org-dev-doc)
# apt-get install openoffice.org-dev
Se viene scaricato il pacchetto .tar.gz, allora occorre decomprimerlo da qualche parte dove avete il permesso di scrittura. Dopo tale operazione il pacchetto .tar.gz può essere cancellato per recuperare spazio su disco. Il file index.html, presente sul quel sito, è la pagina principale per la documentazione OOo SDK (per chi usa Debian o derivate può installare il pacchetto openoffice.org-dev-doc per avere la documentazione in locale. In questo caso la documentazione si trova sotto /usr/share/doc/openoffice.org-dev/docs e gli esempio sono sotto /usr/lib/openoffice/sdk/examples). È consigliato leggere completamente la documentazione SDK o per lo meno le parti principali prima di provare a scrivere del codice per OOo (per ora ignorate la parte riguardante "La guida d'installazione"). Userete principalmente le seguenti: "Guida di sviluppo", "IDL Reference" e "C++ Reference".
Aprite un terminale, spostatevi nella directory contenente l'SDK (su Debian è: /usr/lib/openoffice/sdk) Nota: sostituire qui sotto la directory /usr/lib/openoffice (percorso per Debian) con il percorso assoluto dove OOo è stato installato. Eseguire le seguenti istruzioni (se si è installato il pacchetto Debian occorre essere root o utilizzare il comando sudo se l'utente è autorizzato a farlo):
echo export OOoSDK='"'`pwd`'"' > OOoSetenv echo export PATH='"$OOoSDK/linux/bin:$PATH"' >> OOoSetenv echo export OOo='"/usr/lib/openoffice/program"' >> OOoSetenv echo export LD_LIBRARY_PATH='"$OOo:$LD_LIBRARY_PATH"' >> OOoSetenv
Nota: controllare che l'utente che poi utilizzerete per l'uso dell'SDK abbia i permessi di lettura su tale file (OOoSetenv).
Questi comandi creano uno script che serve ad impostare i parametri d'ambiente necessari per poter utilizzare l'SDK. Per poter eseguire i comandi contenuti nel file OOoSetenv occorre eseguire:
$ source OOoSetenv
Potete ora provare per verificare se tutto funziona correttamente; in questo caso non verrà visualizzato nessun messaggio.
Successivamente creeremo un link alla libreria libcppuhelpergcc3.so che dovrebbe essere nella directory $OOo. Per verificare che tutto sia settato correttamente eseguire la seguente istruzione:
$ ls $OOo/*cppuhelper*
Se viene visualizzato il file libcppuhelpergcc3.so, allora tutto è andato per il verso giusto :-) Se non si vede tale file, allora ci dovrebbe essere il file libcppuhelpergcc3.so.3, in questo caso eseguire il comando (da root o utilizzando sudo se si è utilizzato il pacchetto Debian):
ln -s $OOo/libcppuhelpergcc3.so.3 $OOo/libcppuhelpergcc3.so
Questo comando crea il file ricercato con l'istruzione precedente. Se invece mancano entrambi i file, allora è stato commesso qualche errore nella creazione del file OOoSetenv o non ci si è posizionati nella directory giusta per create tale file.
Infine creare una directory myProjects fornendo all'utente che poi utilizzerete i permessi completi su di essa Nota: le due istruzioni vanno eseguita da root o con sudo se si è installato il pacchetto Debian
mkdir myProjects
Se si è installato il pacchetto Debian, allora occorre eseguire anche la seguente (sempre da root o con sudo) sostituendo a UtenteNormale la login dell'utente che userete per le esercitazioni
chown UtenteNormale:UtenteNormale myProjects
In questa directory collocheremo i progetti creati. Ora si può chiudere la shell.
Introduzione
Un componente è un add-on (Merriam-Webster dice "add-on: qualcosa (come un accessorio o una funzionalità addizionale) che migliora la cosa a cui è aggiunta") per OOo. Gli add-on sono più specificatamente chiamati componenti di UNO (vedere "3 UNO professionale" e "4 scrivere componenti di UNO" nella "Guida allo sviluppo" dell'SDK). È possibile scrivere componenti per OOo in molti linguaggi di programmazione, tra i quali: C++ e Java.
Calc è l'applicazione del foglio elettronico di OOo. Ora scriveremo un add-in per Calc, cioè uno speciale componente di UNO, che fornisce un generatore pseudocasuale di numeri (RNG: Random Number Generator). Per esempio, la funzione "RAND( )" di Calc è un RNG che ritorna un numero pseudocasuale compreso tra 0 e 1. Così facciamo qualcosa di nuovo e scriviamo un RNG che ritorna numero pseudocasuali distribuiti esponenzialmente. In questa guida faremo le stesse operazioni che sono necessarie per generare un componente di UNO e/o un add-in di Calc scritto in C++, così non faremo nulla di specifico agli RNG, ma è giusto un esempio che possiamo implementare per Calc. Per maggiori informazioni si possono vedere i dettagli dei numero pseudocasuali distribuiti esponenzialmente su wikipedia o mathworld.