Makroprogrammering med Python (I)

En af de vigtigste muligheder i LibreOffice (og OpenOffice.org) er at du selv kan lave yderligere funktioner med makroprogrammering. Det er muligt at programmere med flere forskellige sprog, herunder fire indbyggede sprog. Det er Basic, JavaScript Java og Python.

LibreOffice (og OpenOffice.org) leveres med et integreret Python afviklingsmiljø, hvilket er gør at alle Python makroer kan afvikles direkte uden at skulle installere et særskilt afviklingsmiljø, hvilket f.eks. tilfældet med Java programmerede makroer som forudsætter at du som bruger har installeret et Java afviklingsmiljø (JRE: Java Runtime Environment). For øjeblikket er det Python 2.6 som er implementeret i LibreOffice.

Jeg har i flere situationer brugt basic (Star Basic) til programmering. Hver af de nævnte programmeringssprog har sine egne fordele og ulemper. Det gælder om i den enkelte situation at vælge det sprog som passer bedst til den konkrete situation. Python har fordele frem for Star Basic og det er blandt andet at Python er mere effektivt (afvikles hurtigere). En anden årsag til at benytte Python er at der findes en lang række moduler som gør Python til et mere komplet programmeringssprog end Basic.

Et eksempel på et Pythonprogram som viser effektiviteten i Python er en “word counter” som hele tiden /en gang hvert sekund) beregner antal ord i et dokument. (Programmet kan du finde her: https://bitbucket.org/yawaramin/oo.o-live-word-count/wiki/Home ). Hvis det tilsvarende program var programmeret i Star Basic ville det gøre LibreOffice meget langsom.

Hvor er programeditoren?

Hvis du har programmeret Basic i LibreOffice har du helt sikkert brugt det indbyggede IDE (Integrated Development Environment)

Basic IDE

Basic IDE

Der følger ikke et indbygget Python-IDE med LibreOffice. Du kan bruge en teksteditor (f.eks. Notepad++) eller en dedikeret Python editor, f.eks. IDLE som er den ‘officielle’ editor.

Implementere et Python script i LibreOffice

Et python script er en tekstfil med endelsen “.py”. For at implementere en python makro i LibreOffice skal py-filen placeres præcist der hvor LibreOffice forventer at den ligger.

  • Linux: /home/your-user-name/.libreoffice/3/user/Scripts/python
  • Mac: /Users/your-user-name/Library/Application Support/libreoffice/3/user/Scripts/python
  • Windows Vista: C:\Users\your-user-name\AppData\Roaming\libreoffice\3\user\Scripts\python

Hvis folderen ‘python’ ikke findes i ‘Scripts’ skal du selv oprette den. (Læg mærke til at python skal skrives med små bogstaver men Scripts skal skrives med stort S.

Herefter vil makroen helt automatisk dukke op i LibreOffice.

Prøv f.eks. at hente Word Count fra http://bitbucket.org/yawaramin/oo.o-live-word-count/raw/tip/wc.py og gem filen i LibreOffice’s Python-sted.

Ordtælleren aktiverer du i Writer ved at vælge Funktioner – Makroer – Udfør makro…

Vælg python makroen fra makrovælgeren

Vælg python makroen fra makrovælgeren

I makrovælgeren markerer du ‘wc’ og i højreside ‘WordCount’.

Word Counter i aktion

Word count i aktion

Lad programmeringen begynde…

Vi vil lave en makro som kan indsætte tekst i et tekstdokument. Åbn din IDE (Notepad, Notepadd++, IDLE eller hvad du foretrækker.

Indtast følgende kode:

# HelloWorld python script for the scripting framework
def WriteSomething( ):
    """Prints into the current document"""
    model = XSCRIPTCONTEXT.getDocument() text = model.Text
    oTCurs = text.createTextCursor()
    StringToWrite = "Hello world"
    text.insertString( oTCurs, StringToWrite , 0 )

Gem filen med et fornuftigt navn (der slutter på .py) i LibreOffice’s python-folder. Herefter kan du finde makroen i LibreOffice i Funktioner – Makroer – Udfør makro…

Makroen indsætter teksten “Hello world” i begyndelsen af dokumentet.

Links

Om Python: http://da.wikipedia.org/wiki/Python_(programmeringssprog)
Download Python for Windows: http://www.python.org/ftp/python/2.4.1/python-2.4.1.msi
God tutorial: http://www.sthurlow.com/python/

 

Om leif

Leif Lodahl Leif er certificeret PRINCE2 projektleder og har mange års erfaring inden for dette felt. Desuden er det Leif, der styrer aktiviteterne omkring LibreOffice (tidligere OpenOffice.org), og det er her Leif er på hjemmebane. På dette felt har Leif erfaring med både rådgivning, konsulentarbejde og undervisning. Leif Lodahl er manden, der står i spidsen for Libreoffice i Danmark, og han er en hyppig deltager i debatten omkring LibreOffice og open source.
Dette indlæg blev udgivet i Kontorblokken og tagget , , , , , , . Bogmærk permalinket.

Skriv en kommentar