Comment insérer un commentaire par programme ?
TDF LibreOffice Document Liberation Project Blogs communautaires Weblate Nextcloud Redmine Ask LibreOffice Donner
Description
On souhaite gérer par programme l'insertion de commentaire (par exemple pour y indiquer l'Auteur et/ou la Date du commentaire).
Nous utilisons pour cela le service com.sun.star.text.XTextViewCursor[1] et com.sun.star.text.textfield.Annotation services[2] et une structure com.sun.star.util.DateTime[3] pour définir précisément la date et heure voulue pour le commentaire.
Code
La procédure suivante pourrait par exemple être associée à un raccourci-clavier. Elle insère à la position courante du curseur un nouveau commentaire.
Option Explicit
Sub InsertComment
'''Insérer un commentaire où se trouve le curseur'''
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 du commentaire"
.Content = "Texte du commentaire"
.DateTimeValue = oDateTime
End With
oAnnot.attach(oCurs.Start) ' Insérer au début du curseur
End Sub ' InsertComment
En utilisant Python:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import uno
def InsertComment():
"""Insérer un commentaire où se trouve le curseur
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 du commentaire"
annot.Content = 'Texte du commentaire'
annot.DateTimeValue = dt
annot.attach(curs.Start) # Insérer au début du curseur
Le calcul de l'horodatage n'est pas effectué dans ces exemples.
Notes