Macros/Writer/001
TDF LibreOffice Document Liberation Project Blogs gemeenschap Weblate Nextcloud Redmine Ask LibreOffice Doneren
Beschrijving
Hier willen we beschrijven hoe je een macro maakt voor Writer om een eigen notitie toe te voegen op de plek waar de cursor staat (hier willen we de velden Auteur en/of Datum wijzigen).
We gebruiken de services com.sun.star.text.XTextViewCursor[1] en com.sun.star.text.textfield.Annotation[2] als ook de structure com.sun.star.util.DateTime[3] om het tijdstempel op te halen op het moment van uitvoeren.
Code
De volgende macro, waar je een sneltoets voor zou kunnen maken, voegt een notitie toe op de huidige positie van de cursor:
Option Explicit
Sub InsertComment
'''Voeg een notitie toe op de plaats van de cursor'''
Dim oCurs As Object ' com.sun.star.text.text.XTextViewCursor
Dim oAnnot As Object ' com.sun.star.text.textfield.Annotation
Dim oDateTime As New com.sun.star.util.DateTime
oCurs = ThisComponent.CurrentController.getViewCursor()
oAnnot = ThisComponent.createInstance( _
"com.sun.star.text.textfield.Annotation")
With oDateTime ' com.sun.star.util.DateTime
.Minutes = 20
.Hours = 12
.Day = 20
.Month = 12
.Year = 2012
End With
With oAnnot ' com.sun.star.text.textfield.Annotation
.Author = "Auteur van de notitie"
.Content = "Inhoud van de notitie"
.DateTimeValue = oDateTime
End With
oAnnot.attach(oCurs.Start) ' Toevoegen op de plek van de cursor
End Sub ' InsertComment
In Python:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import uno
def InsertComment():
"""Toevoegen op de plek van de cursor
curs com.sun.star.text.text.XTextViewCursor
annot com.sun.star.text.textfield.Annotation
"""
dt = uno.createUnoStruct("com.sun.star.util.DateTime")
thisComponent = XSCRIPTCONTEXT.getDocument()
curs = thisComponent.CurrentController.getViewCursor()
annot = thisComponent.createInstance(
"com.sun.star.text.textfield.Annotation")
dt.Minutes = 20
dt.Hours = 12
dt.Day = 20
dt.Month = 12
dt.Year = 2012
annot.Author = "Auteur van de notitie"
annot.Content = 'Inhoud van de notitie'
annot.DateTimeValue = dt
annot.attach(curs.Start) # Toevoegen op de plek van de cursor
In de voorbeelden hebben we de berekening van het tijdstempel weggelaten.