86
a cura di nizan Soluzioni Open Source Fondamenti di programmazione OpenOffice.org Basic

Fondamenti di programmazione OpenOffice.org Basic · – Manuale di riferimento (online) dell'API OpenOffice.org 33. OpenOffice.org API: concetti

Embed Size (px)

Citation preview

a cura di nizan Soluzioni Open Source

Fondamenti di programmazione OpenOffice.org Basic

GNU Free Documentation License

Copyright © 2003 nizan Soluzioni OpenSource via Marconi,14 Casalecchio di Reno.Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Text Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

2

OpenOffice.org

OpenOffice.org è un progetto Open Source che

ha quale scopo primario lo sviluppo di una

Suite per l'Ufficio multi-lingue e multi-

piattaforma, basata sullo standard aperto XML

di salvataggio dei documenti

3

Differenze tra StarOffice e OpenOffice.org

Non tutto il codice di StarOffice è disponibile presso OpenOffice.org.La ragione dipende dal fatto che Sun Microsystems utilizza codice di terze parti e ne acquista la licenza; non ha perciò il permesso di renderlo utilizzabile in OpenOffice.org. Le parti che sono o saranno presenti in StarOffice, ma non disponibili in OpenOffice.org includono:

* Controllo Ortografico * Alcuni caratteri (inclusi, in modo particolare, i caratteri delle lingue orientali) * La Guida * Il componente di Database (Adabas D) * I Modelli * La vasta galleria di Clip Art * Alcune funzionalità di ordinamento (nelle versioni asiatiche) * Alcuni filtri per i file

4

OpenOffice.org: uso delle macro

● Creazione nuova macro● Creazione nuovo modulo● Gestione moduli● Gestione librerie● Importazione/esportazione● Assegnazione macro

5

OpenOffice.org:uso delle macro

6

Finestra Macro: moduli standard

7

Opzioni: percorsi

8

Finestra Macro: moduli utente

9

Gestione macro: moduli

10

Gestione macro: librerie

11

Assegnazione macro: voce di menù

12

Assegnazione macro: combinazione di tasti

13

Assegnazione macro: eventi

14

OpenOffice.org Basic: differenze rispetto ai dialetti basic tradizionali

OpenOffice.org Basic è modulareLa programmazione con OpenOffice.org Basic è basata su singole Subs o Functions che terminano sempre con End Sub o End Function. In ogni Sub o Function può essere chiamata un'altra Sub o FunctionQuando una macro viene eseguita automaticamente essa chiama la Sub corrispondente

15

OpenOffice.org Basic: considerazioni tecniche

● Variabili● Oggetti● Procedure e funzioni● Librerie di moduli e dialoghi

16

Variabili: dichiarazione

● DIM a$– dichiara “a” come stringa

● DIM a As String– dichiara “a” come stringa

● DIM a$, b As Integer– dichiara “a” come stringa, “b” come intero

17

Variabili: dichiarazione

La dichiarazione delle variabili NON è obbligatoria

Questo comportamento può essere cambiato utilizzando “OPTION EXPLICIT” come prima istruzione di un modulo

18

Variabili: tipi

● DIM Variabile%● DIM Variabile&● DIM Variabile!● DIM Variabile#● DIM Variabile@● DIM Variabile$

● Integer● Long● Single● Double● Currency● String

● Date● Boolean

Forma breve DIM Variabile As ...

19

Procedure e Funzioni: chiamata semplice

Sub InizioDIM Variabile1 As StringDIM Variabile2 As Integer

Codice

End Sub

20

Procedure e Funzioni: chiamata semplice

Function Inizio As IntegerDIM Variabile1 As StringDIM Variabile2 As Integer

Codice

Inizio = Valore (valore di ritorno)

End Function

21

Procedure e Funzioni: chiamata con parametri

Sub Inizio(Par1 As Integer, Par2 As String)DIM Variabile1 As StringDIM Variabile2 AS Integer

Codice

End Sub

22

Procedure e Funzioni: chiamata con parametri

Function Inizio(Par1 As Single) As IntegerDIM Variabile1 As StringDIM Variabile2 AS Integer

Codice

Inizio = Valore (valore di ritorno)

End Function

23

Procedure e funzioni: visibilità delle variabili

● PUBLIC Variabile As TYPENAME– Visibile in tutti i moduli

● PRIVATE Variabile As TYPENAME– Visibile solo nel modulo corrente

● DIM Variabile As TYPENAME– Come sopra

● STATIC Variabile As TYPENAME– Preserva il valore di una variabile in una Sub

24

Procedure e funzioni: altre caratteristiche

● Di default tutte le variabili vengono passate alle funzioni per riferimento

– Per modificare questo comportamento aggiungere la keyword “ByVal” prima di un parametro nella chiamata della funzione

● Le chiamate ricorsive di Subs e Functions NON sono permesse

25

Librerie, moduli e dialog● Le librerie sono un tool per organizzare più moduli.

Quando un documento o un template vengono salvati, tutte le librerie in esso contenute vengono salvate

● I moduli contengono Sub e Function e tutte le variabili valide in uno o tutti i moduli

● I dialog permettono l'interazione con l'utente tramite controlli ed eventi

26

Gestione macro: moduli

27

OpenOffice.org Basic IDE

● Ambiente di sviluppo integrato in OpenOffice.org

● Supporto linguaggio di programmazione OpenOffice.org Basic

● Editor avanzato● Interfacciamento diretto con API di

programmazione● Debugging avanzato

28

StarBasic IDE: interfaccia

29

StarBasic IDE: debugging

30

L'API OpenOffice.org

L'API OpenOffice.org si basa sulla tecnologia a componenti di OpenOffice.org e consiste in una ampia gamma di interfacce scritte in un linguaggio IDL simile a CORBA.

Mentre la tecnologia a componenti determina come i componenti o le applicazioni comunicano gli uni con gli altri e come accedere all'API da specifici linguaggi, l'API definisce l'interfaccia per accedere alle funzionalità indipendentemente dal linguaggio usato.

31

L'API OpenOffice.org: definizione

● L'API OpenOffice.org non è un linguaggio di programmazione– E' una definizione astratta di tutti gli oggetti e

delle interfacce che si possono usare nella programmazione.

– OpenOffice.org Basic offre un interfacciamento diretto con l'API OpenOffice.org ma le stesse interfacce possono essere utilizzate da altri linguaggi di programmazione (C, C++, Java, StarScript)

32

API OpenOffice.org: informazioni addizionali

● http://api.openoffice.org/– Homepage del progetto API OpenOffice.org

● http://api.openoffice.org/basic/man/tutorial/tutorial.pdf– Tutorial sull'API OpenOffice.org (aka Staroffice)

e OpenOffice.org Basic (aka StarBasic)● http://api.openoffice.org/docs/common/ref/com/sun/star/module-ix.html

– Manuale di riferimento (online) dell'API OpenOffice.org

33

OpenOffice.org API: concetti

● Servizi e interfacce

● Moduli

● Componenti

34

OpenOffice.org API: servizi e interfacce

● Un servizio è un concetto “astratto” che fornisce interfacce e proprietà

– Ogni implementazione di un particolare servizio deve fornire le stesse interfacce

– Una interfaccia è una collezione di metodi che forniscono certe funzionalità

35

Gestione macro: librerie

36

Servizi e interfacce

37

OpenOffice.org API: moduli

● I moduli sono raggruppamenti di servizi, interfacce, tipi, numeratori e strutture dati.

– Alcuni esempi di moduli sono text, sheet, table e drawing

– Sebbene i loro nomi corrispondano con quelli di certe applicazioni non c'è un legame diretto tra questi (es. il modulo document non è usato solamente per documenti di testo)

38

StarOffice API module structure

39

OpenOffice.org API: componenti

● I componenti implementano servizi dell'API di OpenOffice.org

– Non è possibile accedervi direttamente programmando con l'API di OpenOffice.org.

– Sono accessibili come “beans” che è possibile incorporare nei programmi

– Il loro utilizzo è fuori dallo scopo di questo trattato

40

a cura di nizan Soluzioni Open Source

END

a cura di nizan Soluzioni Open Source

Fondamenti di programmazione OpenOffice.org API

(parte 2)

GNU Free Documentation License

Copyright © 2003 nizan Soluzioni OpenSource via Marconi,14 Casalecchio di Reno.Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Text Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Funzioni I/O standard

OpenOffice.org Basic comprende un set

completo di funzioni di I/O sul filesystem che lo

rendono compatibile con Visual Basic. Per

garantire l'indipendenza dal sistema operativo

usato è stata aggiunta la notazione “file://...”

Esempio I/O con funzioni standard

Open "file:///home/guandalf/prova.txt" For Input As #1

While Not Eof(#1)Input #1, a$Print a$

Wend

Close #1

I/O con l'API OpenOffice.org

Servizio:com.sun.star.ucb.SimpleFileAccess

Interfacce:com.sun.star.ucb.XSimpleFileAccess2

com.sun.star.ucb.XSimpleFileAccess

I/O con l'API OpenOffice.orgmetodi

● Copiare, muovere e rimuovere files e folders

(copy(), move(), kill())

● Ottenere informazioni riguardanti files e

folders (isFolder(), exists(), getSize(), ...)

● Aprire e creare files (openFileRead(),

openFileWrite(), openFileReadWrite())

I/O con l'API OpenOffice.orgintefacce stream

● com.sun.star.io.XInputStream,

com.sun.star.io.XSeekable

● com.sun.star.io.XOutputStream,

com.sun.star.io.XSeekable

● com.sun.star.io.XStream,

com.sun.star.io.XSeekable

Intefacce stream specifiche per I/O su files di testo

Servizi:com.sun.star.io.TextInputStreamcom.sun.star.io.TextOutputStream

Interfacce:com.sun.star.io.XTextInputStreamcom.sun.star.io.XActiveDataSinkcom.sun.star.io.XTextOutputStreamcom.sun.star.io.XActiveDataSource

Intefacce stream specifiche per input da files di testo

L'interfacciacom.sun.star.io.XActiveDataSink

esporta il metodosetInputStream()

che accetta come parametro un oggetto ritornato dal metodo

openFileRead()

Intefacce stream specifiche per I/O su files di testo

Utilizzando i metodireadLine()

readString()

esportati dall'interfacciacom.sun.star.io.XTextInputStream

possiamo leggere linee o stringhe dal file di testo

Intefacce stream specifiche per I/O su files di testo

Utilizzando il metodosetEncoding()

possiamo definire la codifica dei caratteri che sarà usata (default UTF-8)

http://www.iana.org/assignments/character-sets

Intefacce stream specifiche per output su files di testo

L'interfacciacom. sun. star. io.XActiveDataSource

esporta il metodosetOutputStream()

che accetta come parametro un oggetto ritornato dal metodo

openFileWrite()

Intefacce stream specifiche per I/O su files di testo

Utilizzando il metodowriteString()

esportato dall'interfacciacom.sun.star.io.XTextOutputStream

possiamo scrivere stringhe nel file di testo

Chiusura streams

I files aperti devono essere chiusi utilizzando i metodi

com.sun.star.io.XInputStream:closeInput() com.sun.star.io.XOutputStream:closeOutput()

Esempio I/O con API OpenOffice.org

oSimpleFileAccess = createUnoService_("com.sun.star.ucb.SimpleFileAccess")

oStream = oSimpleFileAccess.openFileRead_("file:///home/guandalf/prova.txt")

oTextStream = createUnoService_("com.sun.star.io.TextInputStream")

oTextStream.setInputStream(oStream)

While Not oTextStream.isEOF()sLine = oTextStream.readLine()Print sLine

Wend

oStream.closeInput()

Formati data e ora

OpenOffice.org supporta diversi tipi di formati e

funzioni per il trattamento di data e ora

compatibili con Visual Basic

Formati data e oraI metodi

com.sun.star.awt.XDateField:setDate()

ecom.sun.star.awt.XDateField:getDate()

utilizzano uno speciale formato ISO non compatibile con le funzioni

Date e Time

interne al Basic

Formati data e ora

Le funzioniCDateToIso

eCDateFromIso

convertono i formati da quello del Basic a quello delle API e viceversa

Interazione tra Basic e API

● StarDesktop

● ThisComponent

StarDesktop

Dà accesso diretto al servizio: com.sun.star.frame.Desktop

MsgBox StarDesktop.Dbg_SupportedInterfaces

equivale aDim oDesktop

oDesktop = createUnoService_(“com.sun.star.frame.Desktop”)

MsgBox oDesktop.Dbg_SupportedInterfaces

ThisComponent

● Dà accesso al documento corrente o che contiene il codice eseguito

● Il valore ritornato dipende dal documento al quale fa riferimento– Es.

MsgBox ThisComponent.Dbg_SupportedInterfaces

Questo esempio produrrà diversi risultati dipendentemente dal documento sul quale stiamo operando

Interfacce di default

Tutti i documenti esportano una serie di

interfacce di default.

Dipendentemente dal tipo di documento,

saranno disponibili una ulteriore serie di

interfacce specializzate.

Interfacce esportate da tutti i documenti (segue)

● com.sun.star.beans.XPropertySet● com.sun.star.container.XChild● com.sun.star.document.XdocumentInfoSupplier● com.sun.star.document.XEventBroadcaster● com.sun.star.document.XViewDataSupplier● com.sun.star.document.XEventsSupplier● com.sun.star.document.XLinkTargetSupplier

Interfacce esportate da tutti i documenti

● com.sun.star.frame.XModel● com.sun.star.frame.XStorable● com.sun.star.lang.XServiceInfo● com.sun.star.lang.XMultiServiceFactory● com.sun.star.lang.XEventListener● com.sun.star.style.XStyleFamiliesSupplier● com.sun.star.util.XModifiable● com.sun.star.view.XPrintable

com.sun.star.beans.XPropertySet

Fornisce informazioni e accesso alle proprietà di una implementazione.Le proprietà possono essere di tipo:

● Bound● Constrained● Free

E' possibile legare dei “listener” alle proprietà di tipo bound e constrained.

com.sun.star.container.XChild

Permette l'accesso al “genitore” dell'oggetto

specificato tramite i metodi

getParent()

setParent()

com.sun.star.document.XDocumentInfoSupplier

Fornisce informazioni specifiche sul documento come:

autoredata di creazione

titoloinformazioni sull'utente

com.sun.star.document.XEventBroadcaster

Permette di registrare “listener” che saranno

chiamati quando determinati eventi avverranno

nel documentoAlcuni nomi di eventi sono:OnLoadFinishedOnPrintOnResize

com.sun.star.document.XViewDataSupplier

Dà accesso a una serie di proprietà che

descrivono le “viste” del documento

Ogni vista è descritta da una serie di

com.sun.star.beans.PropertyValue

com.sun.star.document.XEventsSupplier

Attraverso la chiamata al metodo

getEvents()

ritorna una lista di handlers legati a eventi

dell'oggetto

com.sun.star.document.XLinkTargetSupplier

Interfaccia fornita dagli oggetti all'interno del

modello del documento che possono essere

target di un link.

Il metodo

getLinks()

ritorna l'elenco e implementa il servizio

LinkTargets sul quale operare.

com.sun.star.frame.XModel

E' la rappresentazione di un componente

creato tramite un URL e degli argomenti.

Contiene ad esempio il nome della risorsa

accessibile tramite il metodo

getURL()

com.sun.star.frame.XStorable

Permette in modo semplice di immagazzinare

un componente in un URL.

Ad esempio il metodo

store()

salva il componente nell'URL dal quale era

stato caricato.

com.sun.star.lang.XServiceInfo

Fornisce informazioni riguardanti le

implementazioni di servizi, cioè quali servizi

sono implementati e il nome

dell'implementazione.

com.sun.star.lang.XMultiServiceFactory

Permette la creazione di istanze di servizi che

verranno inclusi nel documento.

Con il metodo

createInstance()

si crea una istanza (ad esempio di un servizio,

ma non solo) all'interno del documento.

com.sun.star.lang.XEventListener

E' l'interfaccia di base per tutte le interfacce “listener”

Esporta un metododisposing()che viene chiamato quando il “broadcaster” sta per essere rimosso

com.sun.star.style.XStyleFamiliesSupplier

Questa interfaccia fornisce l'accesso alle famiglie di stili contenute nel documento.

Il metodogetStyleFamilies()ritorna questo elenco come un contenitore di stili.

com.sun.star.util.XModifiable

Rende accessibile lo stato di documento

modificato attraverso i metodi

isModified()

setModified()

com.sun.star.view.XPrintable

Fornisce le funzionalità basilari di stampa

Esporta i metodi

getPrinter()

setPrinter()

print()

Documenti Text:servizi e interfacce

● Servizio com.sun.star.text.TextDocument

che esporta l'intefaccia

com.sun.star.text.XTextDocument

● Diverse altre interfacce specialmente dal

modulo com.sun.star.text

com.sun.star.text.XTextDocument

Fornisce l'interfaccia principale per un

documento di testo

Esporta

getText()

reformat()

Documenti Spreadsheet:servizi e interfacce

● Servizio com.sun.star.sheet.SpreadsheetDocument

● Diverse altre interfacce specialmente dal

modulo com.sun.star.sheet

com.sun.star.sheet.SpreadsheetDocument

Fornisce l'accesso a una collezione di fogli di calcolo

EsportagetSheets()

Documenti Drawing:servizi e interfacce

● Servizio com.sun.star.sheet.DrawingDocument

● Diverse altre interfacce specialmente dal

modulo com.sun.star.drawing

a cura di nizan Soluzioni Open Source

END