Jump to content

Macros/Writer/001/es

From The Document Foundation Wiki
This page is a translated version of the page Macros/Writer/001 and the translation is 100% complete.


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.

Notas