IT/Calc/Add-In/Simple Calc Add-In (Italian)

From Apache OpenOffice Wiki
< IT
Revision as of 19:06, 17 September 2006 by DavidePrina (talk | contribs)
Jump to: navigation, search
Progetto "Estensioni" per OOo

Si prega di consultare le
linee guida per l'uso del wiki
prima di contribuire.

Categorie:

Pagine:

Estensioni sul sito principale

Questo progetto in altre lingue:
DE EN ES FR OC


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.

Personal tools