La comunità dei volontari che sviluppano e promuovono OpenOffice.org dà vita a una fondazione indipendente per assicurare il futuro e l'evoluzione del progetto
The Internet, 28 sett 2010 - La comunità dei volontari che sviluppano e promuovono OpenOffice.org, il più importante software libero per la produttività individuale, annuncia una significativa evoluzione del progetto. Dopo dieci anni di evoluzione con Sun Microsystems come fondatore e principale sponsor, il progetto annuncia una fondazione indipendente chiamata "The Document Foundation" con l'obiettivo di dare vita alla promessa di indipendenza del programma originale.
La Fondazione sarà al centro di un nuovo ecosistema in cui individui e organizzazioni potranno allo stesso tempo contribuire e trarre beneficio da una suite di produttività autenticamente libera e indipendente. Questo darà vita a una concorrenza più forte, e a una maggiore scelta, a tutto vantaggio degli utenti e dell'innovazione sul mercato. D'ora in avanti, la comunità dei volontari di OpenOffice.org sarà conosciuta come "The Document Foundation".
Oracle, che ha acquisito la proprietà di OpenOffice.org in seguito all'acquisizione di Sun Microsystems, è stata invitata ad aderire alla nuova Fondazione, e a donare il marchio che la comunità ha fatto crescere nel corso di questi dieci anni di storia del progetto. In caso contrario, la Fondazione ha scelto il marchio "LibreOffice" per le future versioni del software.
The Document Foundation è il risultato dello sforzo collettivo di alcuni tra i membri più attivi all'interno della comunità indipendente OpenOffice.org, tra cui leader di progetto e membri del Community Council. In questo periodo di transizione, verrà guidata da uno Steering Committee composto da sviluppatori e leader dei progetti linguistici nazionali. L'obiettivo della Fondazione è quello di eliminare le barriere all'adozione sia per gli utenti che per gli sviluppatori, e fare di LibreOffice la più accessibile tra le suite di produttività.
La Fondazione coordinerà lo sviluppo di LibreOffice, che è disponibile in versione beta all'indirizzo provvisorio: http://www.libreoffice.org. Gli sviluppatori sono invitati ad aderire al progetto e contribuire al codice in un ambiente aperto e collaborativo, per dare vita al futuro delle suite di produttività insieme a chi traduce, verifica, documenta, supporta e promuove il software.
Parlando a nome del gruppo di volontari, Italo Vignoli - Presidente dell'Associazione PLIO - ha dichiarato: "Riteniamo che la Fondazione sia un passo molto importante per l'evoluzione della suite di produttività libera, perché separa lo sviluppo del codice e il futuro del progetto dagli interessi commerciali di una singola azienda. I sostenitori del software libero, in ogni parte del mondo, hanno la straordinaria opportunità di unirsi al gruppo dei membri fondatori a partire da oggi, per scrivere un nuovo capitolo nella storia del FLOSS".
Richard Stallman, Presidente della Free Software Foundation, ha dato il benvenuto a LibreOffice e alla sua decisione di puntare esclusivamente sul software libero. "Sono felice di sapere che The Document Foundation non raccomanderà l'uso di estensioni non libere, che in questo momento rappresentano il principale problema di OpenOffice.org. Spero che gli sviluppatori di LibreOffice e gli sviluppatori di OpenOffice.org pagati da Oracle riescano a collaborare allo sviluppo del codice sorgente".
"The Document Foundation supporta l'Open Document Format, e intende collaborare con OASIS alla prossima evoluzione dello standard ISO", afferma Charles Schulz, membro del Community Council e coordinatore della Native Language Confederation. "The Document Foundation esprime il punto di vista degli sviluppatori e degli utenti, e questo può accelerare il processo di adozione di ODF tra le istituzioni e le aziende".
Chris DiBona, Open Source Programs Manager di Google, Inc., ha commentato: "La nascita di The Document Foundation è un passo in avanti significativo per gli sviluppi futuri delle suite di produttività. L'eliminazione delle barriere di accesso ai contributi è fondamentale per creare una comunità ampia e attiva intorno a un progetto di software libero. Google è orgogliosa di essere tra i supporter di The Document Foundation e di partecipare al progetto".
"Viva LibreOffice", dice Guy Lunardi, Product Managment Director di Novell. "Siamo impazienti di collaborare con The Document Foundation allo sviluppo di una suite di produttività libera. Speriamo che LibreOffice riesca a fare nel settore dei software per la produttività quello che Mozilla Firefox ha fatto in quello dei browser".
Jan Wildeboer, EMEA Open Source Affairs di Red Hat, ha commentato: "In ogni parte del mondo, gli utenti, le aziende e le istituzioni stanno scegliendo soluzioni software aperte basate su standard aperti. LibreOffice rappresenta l'anello mancante nel mondo dell'ufficio, e noi di Red Hat siamo fieri di far parte di questo progetto".
Mark Shuttleworth, fondatore e azionista di riferimento di Canonical, e ispiratore di Ubuntu, ha dichiarato: "Il software di produttività è un componente indispensabile del desktop libero, e il nostro progetto integrerà LibreOffice di The Document Foundation nelle prossime versioni di Ubuntu. Grazie al patrocinio di The Document Foundation, LibreOffice offre agli sviluppatori di Ubuntu la possibilità di collaborare al codice, e questo permette a Ubuntu di essere una soluzione eccellente per i desktop in ambiente da ufficio".
The Document Foundation: http://www.documentfoundation.org
Elenco dei membri fondatori: http://www.documentfoundation.org/foundation/.
Sezione dedicata agli sviluppatori: http://www.documentfoundation.org/develop/.
Twitter: http://twitter.com/docufoundation - Identi.ca: http://identi.ca/docufoundation.
Mailing list per gli annunci (inglese): announce+subscribe@documentfoundation.org.
Mailing list per le discussioni (inglese): discuss+subscribe@documentfoundation.org.
The Document Foundation
The Document Foundation is an independent self-governing democratic Foundation created by leading members of the former OpenOffice.org Community. It continues to build on the Foundation of ten years' dedicated work by the OpenOffice.org community, and was created in the belief that an independent Foundation is the best fit to the Community's core values of openness, transparency, and valuing people for their contribution. It is open to any individual who agrees with our core values and contributes to our activities, and welcomes corporate participation, e.g. by sponsoring individuals to work as equals alongside other contributors in the community.
Italo Vignoli: italo.vignoli@documentfoundation.org
DICHIARAZIONI
Simon Phipps, OSI
"The Open Source Initiative has observed a trend back towards open collaborative communities for open source software", said Simon Phipps, a Director of the Open Source Initiative. "We welcome The Document Foundation initiative and look forward to the innovation it is able to drive with a truly open community gathered around a free software commons, in the spirit of the best of open source software".
Stormy Peters, GNOME Foundation
"We welcome the LibreOffice project to the free software community as we believe there is a great opportunity for them to enrich the free desktop experience", says Stormy Peters, Executive Director of the GNOME Foundation. "Over the years the GNOME community has been supportive of OpenOffice together with applications in the GNOME Office suite, such as Gnumeric, GnuCash and Abiword. As LibreOffice joins the free software community, we believe that free desktop users will benefit from a rich set of choices".
Patrick Luby ed Ed Peterlin, NeoOffice
Patrick Luby, Chief Engineer of NeoOffice says "I am happy to see a new, independent LibreOffice foundation to continue creating an office suite with enhanced features, pushing OpenOffice.org in new, exciting directions". Ed Peterlin, Chief Visionary at NeoOffice says "I am excited we will be able to continue bringing excellent features from LibreOffice to the Mac platform. In the future I also hope to extend our web based collaboration tools to support LibreOffice users on all platforms".
Chris Hall, Credativ
Chris Halls, UK Managing Director of Credativ, an independent consulting and services company specialising in the development, implementation and support of open source solutions: "Welcomes the foundation as an opportunity to provide a new focus for the community contributors and allow them to move the project forward together. In our business, we support thousands of office desktops in many different environments. It is vital that the feedback and code that we can contribute as part of our day to day work can flow easily into the project".
Claudio Filho, BrOffice
"The creation of The Document Foundation is in line with the vision BrOffice.org - Projeto Brasil has for the Brazilian OpenOffice.org community. Our country already has a large investment in the Open Document Format and the software tools fully suporting it. BrOffice.org and The Document Foundation share the same values and objectives and we are more than happy to be part of it," says Claudio Filho, Chairman of the BrOffice.org NGO of Brazil.
Norwegian Foundation Åpne Kontorprogram På Norsk (Open Office Suites in Norwegian)
So far the Norwegian project has been administered and financed mainly by counties and municipalities, but recently the foundation has started a process for getting commercial companies more actively involved. We realise the need for a more substantial commercial participation to establish a long-term sustainable project. Our foundation notes that the other Nordic countries, a majority of the European countries, as well as a range of worldwide big companies like Google, Novell, Canonical and Red Hat are now cooperating with The Document Foundation. We believe this is the right way forward also for Norway. A cooperation with The Document Foundation will make it easier to create more innovative and user-friendly solutions integrated with the LibreOffice suite. Eliminating license barriers and obtaining easy access to source code and standards will facilitate further development of related and integrated surrounding products.
martedì 28 settembre 2010
venerdì 17 settembre 2010
Celle di Calc
In un precedente post abbiamo visto come fare parecchie cose con le tabelle di Calc. Il passo successivo è riuscire a lavorare con intervalli e celle.
Prima di tutto occorre senza dubbio ottenere il riferimento ad un oggetto tabella, ad esempio la tabella attiva:
Le celle sono raggiungibili attraverso le loro coordinate, ovvero gli indici di colonna e riga.
Occorre ricordare che nell'API di OpenOffice.org gli indici cominciano sempre da 0.
La prima cella in alto a sinistra (cella “A1”) avrà pertanto indice di colonna=0 e indice di riga=0 mentre l'ultima cella in basso a destra (cella “AMJ65536” ) avrà indice di colonna=1023 e indice di riga=65535
Per ottenere un riferimento ad una cella occorre utilizzare il seguente metodo API:
Esempio, per ottenere un riferimento alla cella G4:
L'accesso ai dati contenuti in una cella è garantito attraverso tre modalità diverse, anzi quattro:
Leggere:
Leggere:
N.B. con la proprietà formula i nomi delle funzioni di Calc sono riportati in inglese.
Esempio:
supponiamo che nella cella A1 sia contenuta la seguente funzione =SOMMA(B1:B9)
Eseguendo il codice seguente avremo:
Prima di tutto occorre senza dubbio ottenere il riferimento ad un oggetto tabella, ad esempio la tabella attiva:
oSheet = ThisComponent.CurrentController.ActiveSheet
(qui altri modi per ottenere una tabella)Le celle sono raggiungibili attraverso le loro coordinate, ovvero gli indici di colonna e riga.
Occorre ricordare che nell'API di OpenOffice.org gli indici cominciano sempre da 0.
La prima cella in alto a sinistra (cella “A1”) avrà pertanto indice di colonna=0 e indice di riga=0 mentre l'ultima cella in basso a destra (cella “AMJ65536” ) avrà indice di colonna=1023 e indice di riga=65535
Per ottenere un riferimento ad una cella occorre utilizzare il seguente metodo API:
oCell = oSheet.getCellByPosition(col, row)
dove col e row sono rispettivamente gli indici di colonna e di riga della cella che si vuole ottenere.Esempio, per ottenere un riferimento alla cella G4:
oCell = oSheet.getCellByPosition(6, 3)Una volta ottenuto il riferimento ad un oggetto “cella” possiamo imparare come leggere e scrivere il suo contenuto.
L'accesso ai dati contenuti in una cella è garantito attraverso tre modalità diverse, anzi quattro:
- String
- Value
- Formula
- FormulaLocal
Leggere:
vData = oCell.String Print vDataScrivere:
oCell.String = "Ciao Mondo"Se invece vogliamo accedere al contenuto della cella sotto forma di valore numerico useremo la proprietà Value:
Leggere:
vData = oCell.Value Print vDataScrivere:
oCell.Value = "Ciao Mondo"Allo stesso modo la proprietà Formula ci consente di accedere al contenuto della cella sotto forma di funzione Calc:
N.B. con la proprietà formula i nomi delle funzioni di Calc sono riportati in inglese.
Esempio:
supponiamo che nella cella A1 sia contenuta la seguente funzione =SOMMA(B1:B9)
Eseguendo il codice seguente avremo:
oCell = oSheet.getCellByPosition(0, 0) 'cella A1 vData = oCell.Formula Print vData 'stampa: =SUM(B1:B9)Per ottenere le funzioni con i loro nomi tradotti nella lingua locale di OpenOffice.org occorre usare la variante FormulaLocal
oCell = oSheet.getCellByPosition(0, 0) 'cella A1 vData = oCell.FormulaLocal Print vData 'stampa: =SOMMA(B1:B9)Nel prossimo post vedremo come lavorare con gli intervalli anziché con le singole celle.
venerdì 3 settembre 2010
API - primi passi
OpenOffice.org mette a disposizione un sistema API (Application Programming Interface) che in sostanza è la tecnologia che ci permette di scrivere macro. Più dettagliatamente, si tratta di un'interfaccia di programmazione ovvero di uno “strato” software che ci consente di interagire con OpenOffice.org utilizzando un linguaggio di programmazione opportunamente predisposto.
Per raffigurare la situazione con un esempio pratico possiamo immaginare la nostra TV di casa.
La TV dispone di un certo numero di pulsanti, levette e talvolta manopole disponibili sul fronte dell'apparecchio.
Potremmo definire questo sistema di comandi come l' interfaccia utente del nostro TV mentre il telecomando che ci consente di operare “da remoto” potrebbe essere paragonato all' interfaccia di programmazione (API)
In sostanza possiamo arditamente paragonare l'API di OpenOffice.org ad un telecomando che ci permette di utilizzare le funzionalità della suite “da remoto” ovvero senza mettere mano all'interfaccia utente.
Per completare il quadro però occorre introdurre un terzo elemento, ovvero la logica di controllo.
Nel caso del TV la logica è sempre data dall'elemento umano ovvero da noi stessi che pigiamo materialmente i pulsanti del telecomando.
Nel caso dell'API di OpenOffice.org l'interazione non avviene direttamente con l'utente ma con un programma di controllo o macro.
martedì 31 agosto 2010
Lavorare con le tabelle di Calc
In questo post vedremo come effettuare via macro le operazioni più comuni sulle tabelle di OOo Calc.
Per cominciare occorre ottenere un documento Calc.
Con il codice seguente viene creato un nuovo documento.
sUrl = "private:factory/scalc"
oDoc = StarDesktop.loadComponentFromURL(sUrl,"_default",0, Array())
E' possibile usare lo stesso codice anche per aprire un documento esistente, è sufficiente utilizzare l'URL del documento da aprire al posto di quello usato nell'esempio.
Se si intende lavorare con il documento corrente invece:
Se si intende lavorare con il documento corrente invece:
oCalcDocument = StarDesktop.getCurrentComponent()
Oppure, più semplicemente:
oCalcDocument = ThisComponent
Va detto che le due istruzioni appena illustrate non sono perfettamente equivalenti ma magari dedicherò a questo argomento un post specifico in futuro.
Tornando all'argomento del post, ecco come ottenere l'insieme delle tabelle di un documento Calc:
oSheets = oCalcDocument.getSheets()
Come recuperare le singole tabelle:
Medante indice:
oCalcSheet = oSheets.getByIndex(0) ' forma equivalente abbreviata: oCalcSheet = oSheets(0)
Come sempre nell'API di OpenOffice.org, l'indice comincia da 0 e rappresenta la posizione della tabella nel documento, pertanto la tabella con indice 0 sarà quella che appare con la linguetta più a sinistra (Tabella1 nella figura)
- Mediante il nome:
oCalcSheet = oSheets.getByName("Tabella2") ' anche in questo caso esiste una forma equivalente abbreviata: oCalcSheet = oSheets("Tabella2")
Rinominare una tabella
oSheets("Tabella1").Name = "Nuovo nome"
Spostare una tabella:
Il metodo richiede 2 parametri: il nome della tabella da spostare (che deve esistere) e la posizione di destinazione.
'spostiamola dopo la terza tabella (all'ultima posizione) oSheets.moveByName( "Tabella1", 3)
Aggiungere una tabella:
Il metodo insertNewByName provvede a creare una nuova tabella e inserirla nella posizione specificata. Il metodo prende 2 argomenti: il nome della tabella da creare e la posizione di inserimento.oSheets.insertNewByName("Nuova Tabella",3)
Eliminare una tabella:
Questo metodo richiede un solo parametro: il nome della tabella da eliminare.oSheets.removeByName("Nuova Tabella")
Proteggere / sproteggere una tabella:
Il seguente codice imposta la protezione con password sulla tabella “Tabella1”
oSheets("Tabella1").protect("Password")
Per rimuovere la protezione:
oSheets("Tabella1").unprotect("Password")
Ecco un modo per controllare se una data tabella è protetta
If oSheets("Tabella1").IsProtected Then Print "la tabella: " & oCalcSheet.Name & " è protetta!"
End If
Nascondere/mostrare una tabella:
Occorre ricordare che almeno una tabella deve essere sempre visibile, ovvero non è possibile nascondere tutte le tabelle' nasconde la tabella oSheets("Tabella1").IsVisible = False ' mostra la tabella oSheets("Tabella1").IsVisible = True
Contare le tabelle:
Print oSheets.getCount()
Enumerare le tabelle:
E' importante ricordare che la prima tabella ha l'indice zero
For I = 0 to oSheets.Count -1 oCalcSheet = oSheets.getByIndex(I) print oCalcSheet.Name Next I
Usando la scorciatoia del ciclo “For Each” invece non occorre conoscere a priori il numero degli elementi da iterare:
For Each oCalcSheet In oSheets Print oCalcSheet.Name Next
Rendere attiva una tabella:
Occorre prima fare conoscenza con un nuovo oggetto utilissimo, il controller.
Il controller è il servizio che all'interno del documento è responsabile per la gestione dell'interazione con l'utente (ad esempio schermo, tastiera, mouse, la selezione corrente, eccetera)
oView = oCalcDocument.getCurrentController() oCalcSheet = oSheets("Tabella2") oView.setActiveSheet(oCalcSheet)
E per quanto riguarda le tabelle di Calc direi che abbiamo visto se non proprio tutto almeno parecchio ;)
--
Paolo
venerdì 27 agosto 2010
OOoCon 2010 (remider!)
Tra pochissimi giorni inizierà l'annuale convegno mondiale di OpenOffice.org: OOoCon 2010.
Quest'anno l'evento avrà luogo avrà luogo a Budapest in Ungheria, dal 31 Agosto al 3 Settembre.
Il PLIO sarà ben rappresentato, infatti tra i relatori figurano:
Italo Vignoli, presidente, con ben tre presentazioni:
Bene, concludo con un in bocca al lupo ad Italo e Andrea e buon divertimento a chi ci sarà!!
a presto
Paolo
Quest'anno l'evento avrà luogo avrà luogo a Budapest in Ungheria, dal 31 Agosto al 3 Settembre.
Il PLIO sarà ben rappresentato, infatti tra i relatori figurano:
Italo Vignoli, presidente, con ben tre presentazioni:
- "Selling" the migration concept
- Marketing OOo in 2011 and beyond
- The state of the Italian National Language Project
Wrap up of the latest Extensions infra structure features | di Juergen Schmidt |
Using UNO AWT for creating GUIs in extensions | di Mihaela Kedikova |
New Extensions in EuroOffice 2010 | di Kazmer Koleszar, Gergely Farkas |
Extension Development for Non-programmers | di Dmitri Popov |
VBA, can you hack it, yes you can!! | di Noel Thomas Power, Hui Li |
Bene, concludo con un in bocca al lupo ad Italo e Andrea e buon divertimento a chi ci sarà!!
a presto
Paolo
Scoprire il tipo del documento attivo
Durante una sessione di lavoro con OpenOffice.org, in un istante qualsiasi può esistere un solo documento attivo che corrisponde al documento contenuto nella finestra di OpenOffice.org che ha il focus in quel dato momento.
Dato che, a differenza di MS Office, OpenOffice.org è un'applicazione monolitica, il documento attivo può essere di qualunque tipo: un foglio elettronico, un database, un documento di testo e altro ancora.
Per questo motivo, sviluppando macro, capita abbastanza spesso di avere la necessità di sapere il tipo di documento attivo per poter applicare i metodi appropriati.
In MS Office esiste un programma eseguibile associato a ciascun tipo di documento, in OpenOffice.org invece esiste un componente specifico associato a ciascun tipo di documento, perciò la questione si riduce a conoscere il componente attivo piuttosto che il documento attivo.
I componenti sono dei servizi UNOi che hanno particolari caratteristiche. Senza volerci addentrare in dettagli, diciamo solo che i servizi UNO più complessi solitamente mettono a disposizione dei metodi specifici che permettono di identificare il servizio stesso e ottenere informazioni sulle caratteristiche supportate.
Vediamo ora i metodi più interessanti per il nostro utilizzo:
Vediamo ora come utilizzare quanto osservato fino ad ora per risolvere il problema iniziale, ovvero determinare il tipo di documento attivo.
Prima di tutto otteniamo un riferimento al documento attivo:
Per effettuare il test useremo il metodo supportsService
Ecco l'elenco dei nomi dei servizi UNO con il tipo di documento associato:
Non rimane altro che scrivere il codice che esegue materialmente il test:
Per un uso più generalizzato sarebbe opportuno trasformare la routine dell'esempio in una funzione.
Effettivamente esiste già una funzione simile nella libreria Tools, modulo Misc:
Si tratta della funzione GetDocumentType().
Ecco come utilizzarla:
Alla luce di quanto illustrato fino ad ora dovrebbe essere piuttosto facile modificare la funzione della libreria Tools aggiungendo i tipi di documento mancanti.
A presto
Paolo
Dato che, a differenza di MS Office, OpenOffice.org è un'applicazione monolitica, il documento attivo può essere di qualunque tipo: un foglio elettronico, un database, un documento di testo e altro ancora.
Per questo motivo, sviluppando macro, capita abbastanza spesso di avere la necessità di sapere il tipo di documento attivo per poter applicare i metodi appropriati.
In MS Office esiste un programma eseguibile associato a ciascun tipo di documento, in OpenOffice.org invece esiste un componente specifico associato a ciascun tipo di documento, perciò la questione si riduce a conoscere il componente attivo piuttosto che il documento attivo.
I componenti sono dei servizi UNOi che hanno particolari caratteristiche. Senza volerci addentrare in dettagli, diciamo solo che i servizi UNO più complessi solitamente mettono a disposizione dei metodi specifici che permettono di identificare il servizio stesso e ottenere informazioni sulle caratteristiche supportate.
Vediamo ora i metodi più interessanti per il nostro utilizzo:
Nome | Descrizione |
---|---|
getSupportedServiceNames() | Restituisce un array con i nomi di tutti i servizi UNO supportati dall'oggetto, incluso il servizio UNO principale. Questo metodo non prende argomenti |
supportsService( String: ServiceName) | Controlla se un particolare servizio è supportato dall'oggetto. Il metodo prende in argomento il nome del servizio che si vuole testare e restituisce Vero (True) se il servizio è supportato, Falso (False) se il servizio non è supportato dall'oggetto. |
Vediamo ora come utilizzare quanto osservato fino ad ora per risolvere il problema iniziale, ovvero determinare il tipo di documento attivo.
Prima di tutto otteniamo un riferimento al documento attivo:
oDoc = StarDesktop.getCurrentComponent()Ora dobbiamo controllare se il componente attivo supporta alcuni servizi specifici che identificano univocamente il tipo di documento.
Per effettuare il test useremo il metodo supportsService
Ecco l'elenco dei nomi dei servizi UNO con il tipo di documento associato:
Servizio UNO | Tipo di documento |
---|---|
com.sun.star.text.TextDocument | Documento di testo (Writer) |
com.sun.star.text.WebDocument | Documento HTML (Writer) |
com.sun.star.text.GlobalDocument | Documento Master (Writer) |
com.sun.star.sheet.SpreadsheetDocument | Foglio elettronico (Calc) |
com.sun.star.presentation.PresentationDocument | Presentazione (Impress) |
com.sun.star.drawing.DrawingDocument | Disegno (Draw) |
com.sun.star.formula.FormularProperties | Formula matematica (Math) |
com.sun.star.sdb.OfficeDatabaseDocument | Documento database (Base) |
Non rimane altro che scrivere il codice che esegue materialmente il test:
REM ***** BASIC ***** Sub TestDocumentType()
oDoc = StarDesktop.getCurrentComponent() If oDoc.supportsService("com.sun.star.text.TextDocument") Then MsgBox "Documento di testo OOo Writer" ElseIf oDoc.supportsService("com.sun.star.text.WebDocument") Then MsgBox "Documento HTML di OOo Writer" ElseIf oDoc.supportsService("com.sun.star.text.GlobalDocument") Then MsgBox "Documento Master di OOo Writer" ElseIf oDoc.supportsService("com.sun.star.sheet.SpreadsheetDocument") Then MsgBox "Foglio elettronico di OOo Calc" ElseIf oDoc.supportsService("com.sun.star.drawing.DrawingDocument") Then MsgBox "Disegno di OOo Draw" ElseIf oDoc.supportsService("com.sun.star.presentation.PresentationDocument") Then MsgBox "Presentazione di OOo Impress" ElseIf oDoc.supportsService("com.sun.star.formula.FormulaProperties") Then MsgBox "Formula matematica di OOo Math" ElseIf oDoc.supportsService("com.sun.star.sdb.OfficeDatabaseDocument") Then MsgBox "Documento database di OOo Base" End If End Sub
Per testare il codice è sufficiente copiarlo in nuovo modulo nella libreria Standard del proprio utente, creare un nuovo documento di qualsiasi tipo, tornare nell ambiente di sviluppo (IDE) di StarBasic e lanciare la macro mediante l'apposito pulanste della barra degli strumenti oppure mediante il tasto Per un uso più generalizzato sarebbe opportuno trasformare la routine dell'esempio in una funzione.
Effettivamente esiste già una funzione simile nella libreria Tools, modulo Misc:
Si tratta della funzione GetDocumentType().
Ecco come utilizzarla:
REM ***** BASIC ***** Sub TestToolsFunction() oDoc = StarDesktop.getCurrentComponent() 'prima di utilizzar el efunzioi della libreria 'condivisa Tools occorre caricarla: BasicLibraries.loadLibrary.Tools 'ora è possibile richiamare la funzione sDocType = GetDocumentType(oDoc) MsgBox sDocType End Sub
La funzione inclusa nella libreria Tools purtroppo non è molto aggiornata e non è in grado di riconoscere i documenti OOo Base, i documenti HTML e i documenti MasterAlla luce di quanto illustrato fino ad ora dovrebbe essere piuttosto facile modificare la funzione della libreria Tools aggiungendo i tipi di documento mancanti.
A presto
Paolo
sabato 21 agosto 2010
Ecco il sito di un vero appassionato di MACRO e API !!
Ecco il sito di un vero appassionato di MACRO e API !!
Vi prego non fatemela spiegare ;-)
Comunque posso assicurare che Luca Mazzocchi, autore del sito, non solo è un grande esperto di macrofotografia e profondo conoscitore del mondo dell'apicoltura ma è anche un programmatore di Macro e API di OpenOffice.org. :-)
Vi prego non fatemela spiegare ;-)
Comunque posso assicurare che Luca Mazzocchi, autore del sito, non solo è un grande esperto di macrofotografia e profondo conoscitore del mondo dell'apicoltura ma è anche un programmatore di Macro e API di OpenOffice.org. :-)
Iscriviti a:
Post (Atom)