Fondamenti di programmazione OpenOffice.org Basic - a cura di nizan Soluzioni Open Source
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
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".
2OpenOffice.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
3Differenze 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
4OpenOffice.org: uso delle macro
● Creazione nuova macro
● Creazione nuovo modulo
● Gestione moduli
● Gestione librerie
● Importazione/esportazione
● Assegnazione macro
5OpenOffice.org:uso delle macro
6Finestra Macro: moduli standard
7Opzioni: percorsi
8Finestra Macro: moduli utente
9Gestione macro: moduli
10Gestione macro: librerie
11Assegnazione macro: voce di
menù
12Assegnazione macro:
combinazione di tasti
13Assegnazione macro: eventi
14OpenOffice.org Basic: differenze
rispetto ai dialetti basic tradizionali
OpenOffice.org Basic è modulare
La 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 Function
Quando una macro viene eseguita
automaticamente essa chiama la Sub
corrispondente
15OpenOffice.org Basic:
considerazioni tecniche
● Variabili
● Oggetti
● Procedure e funzioni
● Librerie di moduli e dialoghi
16Variabili: 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
17Variabili: dichiarazione
La dichiarazione delle variabili NON è
obbligatoria
Questo comportamento può essere cambiato
utilizzando “OPTION EXPLICIT” come prima
istruzione di un modulo
18Variabili: tipi
Forma breve DIM Variabile As ...
● DIM Variabile% ● Integer ● Date
● DIM Variabile& ● Long ● Boolean
● DIM Variabile! ● Single
● DIM Variabile# ● Double
● DIM Variabile@ ● Currency
● DIM Variabile$ ● String
19Procedure e Funzioni: chiamata
semplice
Sub Inizio
DIM Variabile1 As String
DIM Variabile2 As Integer
Codice
End Sub
20Procedure e Funzioni: chiamata
semplice
Function Inizio As Integer
DIM Variabile1 As String
DIM Variabile2 As Integer
Codice
Inizio = Valore (valore di ritorno)
End Function
21Procedure e Funzioni: chiamata
con parametri
Sub Inizio(Par1 As Integer, Par2 As String)
DIM Variabile1 As String
DIM Variabile2 AS Integer
Codice
End Sub
22Procedure e Funzioni: chiamata
con parametri
Function Inizio(Par1 As Single) As Integer
DIM Variabile1 As String
DIM Variabile2 AS Integer
Codice
Inizio = Valore (valore di ritorno)
End Function
23Procedure 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
24Procedure 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
25Librerie, 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
26Gestione macro: moduli
27OpenOffice.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
28StarBasic IDE: interfaccia
29StarBasic IDE: debugging
30L'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.
31L'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)
32API 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
33OpenOffice.org API: concetti
● Servizi e interfacce
● Moduli
● Componenti
34OpenOffice.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à
35Gestione macro: librerie
36Servizi e interfacce
37OpenOffice.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)
38StarOffice API module
structure
39OpenOffice.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
40END a cura di nizan Soluzioni Open Source
Fondamenti di programmazione OpenOffice.org API (parte 2) a cura di nizan Soluzioni Open Source
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.XSimpleFileAccessI/O con l'API OpenOffice.org
metodi
● 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.org
intefacce 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.XSeekableIntefacce stream specifiche per
I/O su files di testo
Servizi:
com.sun.star.io.TextInputStream
com.sun.star.io.TextOutputStream
Interfacce:
com.sun.star.io.XTextInputStream
com.sun.star.io.XActiveDataSink
com.sun.star.io.XTextOutputStream
com.sun.star.io.XActiveDataSourceIntefacce stream specifiche per
input da files di testo
L'interfaccia
com.sun.star.io.XActiveDataSink
esporta il metodo
setInputStream()
che accetta come parametro un oggetto
ritornato dal metodo
openFileRead()Intefacce stream specifiche per
I/O su files di testo
Utilizzando i metodi
readLine()
readString()
esportati dall'interfaccia
com.sun.star.io.XTextInputStream
possiamo leggere linee o stringhe dal file di
testoIntefacce stream specifiche per
I/O su files di testo
Utilizzando il metodo
setEncoding()
possiamo definire la codifica dei caratteri
che sarà usata (default UTF-8)
http://www.iana.org/assignments/character-setsIntefacce stream specifiche per
output su files di testo
L'interfaccia
com. sun. star. io.XActiveDataSource
esporta il metodo
setOutputStream()
che accetta come parametro un oggetto
ritornato dal metodo
openFileWrite()Intefacce stream specifiche per
I/O su files di testo
Utilizzando il metodo
writeString()
esportato dall'interfaccia
com.sun.star.io.XTextOutputStream
possiamo scrivere stringhe nel file di testoChiusura 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 ora
I metodi
com.sun.star.awt.XDateField:setDate()
e
com.sun.star.awt.XDateField:getDate()
utilizzano uno speciale formato ISO non
compatibile con le funzioni
Date e Time
interne al BasicFormati data e ora
Le funzioni
CDateToIso
e
CDateFromIso
convertono i formati da quello del Basic a
quello delle API e viceversaInterazione tra Basic e API ● StarDesktop ● ThisComponent
StarDesktop Dà accesso diretto al servizio: com.sun.star.frame.Desktop MsgBox StarDesktop.Dbg_SupportedInterfaces equivale a Dim 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 operandoInterfacce 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.XLinkTargetSupplierInterfacce 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.XPrintablecom.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:
autore
data di creazione
titolo
informazioni sull'utentecom.sun.star.document.XEventBroadcaster Permette di registrare “listener” che saranno chiamati quando determinati eventi avverranno nel documento Alcuni nomi di eventi sono: OnLoadFinished OnPrint OnResize
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'oggettocom.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 metodo disposing() 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 metodo getStyleFamilies() 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.textcom.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.sheetcom.sun.star.sheet.SpreadsheetDocument
Fornisce l'accesso a una collezione di fogli di
calcolo
Esporta
getSheets()Documenti Drawing:
servizi e interfacce
● Servizio com.sun.star.sheet.DrawingDocument
● Diverse altre interfacce specialmente dal
modulo com.sun.star.drawingEND a cura di nizan Soluzioni Open Source
Puoi anche leggere