Macros/Writer/001/es
TDF LibreOffice en español Document Liberation Project Blogs comunitarios Weblate Nextcloud Redmine Preguntas y respuestas Donar
Descripción
Este tutorial cubre cómo escribir una macro para Writer que inserta un comentario personalizado en la posición del cursor (para, por ejemplo, establecer los campos Autor y/o Fecha).
Se usan los servicios com.sun.star.text.XTextViewCursor[1] y com.sun.star.text.textfield.Annotation[2] así como la estructura com.sun.star.util.DateTime[3] para obtener una marca de tiempo en el momento de la ejecución.
Código
La siguiente macro, que por ejemplo podría vincularse con un atajo de teclado, inserta un comentario personalizado en la posición actual del cursor:
Option Explicit
Sub InsertComment
'''Insertar un comentario en la posición del 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 = "autor del comentario"
.Content = "contenido del comentario"
.DateTimeValue = oDateTime
End With
oAnnot.attach(oCurs.Start) ' Insertar al principio del cursor
End Sub ' InsertComment
Usando Python:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import uno
def InsertComment():
"""Insertar un comentario en la posición del 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 = "Autor del comentario"
annot.Content = 'contenido del comentario'
annot.DateTimeValue = dt
annot.attach(curs.Start) # Insertar al principio del cursor
El cálculo de la marca de tiempo no se realiza en estos ejemplos.