2017-09-14

LibreWriter macro per aprire un documento nel punto in cui lo si è chiuso

Si possono creare due macro:
Con la prima (qui) creiamo un segnalibro nel punto in cui siamo arrivati, il segnalibro "qui", e questa macro la assegnamo automaticamente al salvataggio di un documento.
Con la seconda (vai_qui) andiamo esattamente al punto in cui avevamo chiuso il documento, e questa macro la assegniamo alla apertura di un documento. Abbiamo dovuto duplicare le istruzioni, altrimenti, nei documenti lunghi il cursore andava sì nel pyunto dove c'è il segnalibro, ma il focus restava su un'altra porzione del documento. Invece così va tutto a posto.

1a macro

sub qui
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Bookmark"
args1(0).Value = "qui"

dispatcher.executeDispatch(document, ".uno:DeleteBookmark", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Bookmark"
args2(0).Value = "qui"

dispatcher.executeDispatch(document, ".uno:InsertBookmark", "", 0, args2())

end sub

2a macro

sub vai_qui

If NOT ThisComponent.supportsService("com.sun.star.text.TextDocument" ) Then
   Exit Sub  
End If

oBookmarks = ThisComponent.getBookmarks()
If NOT oBookmarks.hasByName("qui") Then
   Exit Sub  
End If

ViewCursor = ThisComponent.CurrentController.getviewCursor()
Bookmark = ThisComponent.Bookmarks.getByName("qui").Anchor
ViewCursor.gotorange(Bookmark, False)

ViewCursor = ThisComponent.CurrentController.getviewCursor()
Bookmark = ThisComponent.Bookmarks.getByName("qui").Anchor
ViewCursor.gotorange(Bookmark, False)

end sub

No comments:

Post a Comment

Blog Archive