Post on 16-Feb-2019
transcript
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 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
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
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: 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
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
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
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
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