Macros/Writer/001/es

    From The Document Foundation Wiki
    < Macros‎ | Writer
    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