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

Pagina creata da Debora Guglielmi
 
CONTINUA A LEGGERE
Fondamenti di programmazione OpenOffice.org Basic - a cura di nizan Soluzioni Open Source
Fondamenti di programmazione
 OpenOffice.org Basic

a cura di nizan Soluzioni Open Source
Fondamenti di programmazione OpenOffice.org Basic - 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".

                                                                              2
Fondamenti di programmazione OpenOffice.org Basic - a cura di nizan Soluzioni Open Source
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