LO: tradurre una parola e scrievere quella tradotta a fianco di querla originale

Si tratta di una macro per LibreOffice, con l’estensione Traduttore; ho copiato, da un sito per imparare inglese, un elenco di verbi inglesi, non tradotti; così ho cercato di velocizzare il prcesso di traduzione e aggiunta della parola tradotta a fianco di quella originale.

Riporto la soluzioone, dal sito AskLibreOffice:

Solved, with the help of macro’s author!

  • After inserting ~/.config/libreoffice/4/user/Scripts/python/TradutorLibreText.py
  • and after installing libreoffice-script-provider-python

This is my macro
sub translate_word
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 = “Language”
args1(0).Value = “Current_Italian (Italy)”

dispatcher.executeDispatch(document, “.uno:LanguageStatus”, “”, 0, args1())

rem–nuovo inserim inizio
Dim oScriptProvider, oScript
oScriptProvider = ThisComponent.getScriptProvider()
oScript = oScriptProvider.getScript(“vnd.sun.star.script:TradutorLibreText.py$TradutorLibreText?language=Python&location=user”)
oScript.invoke(array(), array(), array())
rem–nuovo inserim fine
rem ———————————————————————-
dispatcher.executeDispatch(document, “.uno:WordLeftSel”, “”, 0, Array())

rem ———————————————————————-
dispatcher.executeDispatch(document, “.uno:Copy”, “”, 0, Array())

rem ———————————————————————-
dispatcher.executeDispatch(document, “.uno:Undo”, “”, 0, Array())

rem ———————————————————————-
dispatcher.executeDispatch(document, “.uno:Undo”, “”, 0, Array())

rem ———————————————————————-
dispatcher.executeDispatch(document, “.uno:GoToEndOfLine”, “”, 0, Array())

rem ———————————————————————-
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = “Text”
args7(0).Value = ” ”

dispatcher.executeDispatch(document, “.uno:InsertText”, “”, 0, args7())

rem ———————————————————————-
dispatcher.executeDispatch(document, “.uno:Paste”, “”, 0, Array())

rem ———————————————————————-
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = “Text”
args9(0).Value = “)”

dispatcher.executeDispatch(document, “.uno:InsertText”, “”, 0, args9())

rem ———————————————————————-
dispatcher.executeDispatch(document, “.uno:GoToPrevWord”, “”, 0, Array())

rem ———————————————————————-
dispatcher.executeDispatch(document, “.uno:GoToPrevWord”, “”, 0, Array())

rem ———————————————————————-
dim args12(0) as new com.sun.star.beans.PropertyValue
args12(0).Name = “Text”
args12(0).Value = “(”

dispatcher.executeDispatch(document, “.uno:InsertText”, “”, 0, args12())

rem ———————————————————————-
dim args13(1) as new com.sun.star.beans.PropertyValue
args13(0).Name = “Count”
args13(0).Value = 1
args13(1).Name = “Select”
args13(1).Value = false

dispatcher.executeDispatch(document, “.uno:GoLeft”, “”, 0, args13())

rem ———————————————————————-
dispatcher.executeDispatch(document, “.uno:WordRightSel”, “”, 0, Array())

rem ———————————————————————-
dispatcher.executeDispatch(document, “.uno:WordRightSel”, “”, 0, Array())

rem ———————————————————————-
dim args16(1) as new com.sun.star.beans.PropertyValue
args16(0).Name = “Count”
args16(0).Value = 1
args16(1).Name = “Select”
args16(1).Value = true

dispatcher.executeDispatch(document, “.uno:GoRight”, “”, 0, args16())

rem ———————————————————————-
dim args17(0) as new com.sun.star.beans.PropertyValue
args17(0).Name = “Color”
args17(0).Value = 8421504

dispatcher.executeDispatch(document, “.uno:Color”, “”, 0, args17())

rem ———————————————————————-
dim args18(2) as new com.sun.star.beans.PropertyValue
args18(0).Name = “FontHeight.Height”
args18(0).Value = 8
args18(1).Name = “FontHeight.Prop”
args18(1).Value = 100
args18(2).Name = “FontHeight.Diff”
args18(2).Value = 0

dispatcher.executeDispatch(document, “.uno:FontHeight”, “”, 0, args18())

end sub

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