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". 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 è 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 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 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 19
Procedure e Funzioni: chiamata semplice Sub Inizio DIM Variabile1 As String DIM Variabile2 As Integer Codice End Sub 20
Procedure e Funzioni: chiamata semplice Function Inizio As Integer DIM Variabile1 As String DIM 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 String DIM Variabile2 AS Integer Codice End Sub 22
Procedure 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 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
END 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.XSimpleFileAccess
I/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.XSeekable
Intefacce 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.XActiveDataSource
Intefacce 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 testo
Intefacce 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-sets
Intefacce 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 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 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 Basic
Formati data e ora Le funzioni CDateToIso e CDateFromIso 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 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 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: autore data di creazione titolo informazioni sull'utente
com.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'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 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.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 Esporta getSheets()
Documenti Drawing: servizi e interfacce ● Servizio com.sun.star.sheet.DrawingDocument ● Diverse altre interfacce specialmente dal modulo com.sun.star.drawing
END a cura di nizan Soluzioni Open Source
Puoi anche leggere