Hi. I wrote a macro for Impress in LibreOffice Basic. It catches Events from the presentation controller. However, only slideEnded, slideTransitionStarted and paused seem to work. How can I catch other events, like slideAnimationEnded or slideTransitionEnded?
Here’s my macro:
Sub StartPresentationWithListener()
Dim oDoc As Object
Dim oPresentation As Object
oDoc = ThisComponent
oPresentation = oDoc.Presentation
' Listener erzeugen BEVOR Start(), damit er sofort greift
g_oListener = CreateUnoListener( _
"EV_", _
"com.sun.star.presentation.XSlideShowListener")
' Präsentation starten
oPresentation.Start()
' Kurz warten bis Controller bereit ist (bekanntes LO-Timing-Problem)
Wait 300
' Controller holen und Listener registrieren
g_oController = oPresentation.Controller
If IsNull(g_oController) Or IsEmpty(g_oController) Then
Wait 500
g_oController = oPresentation.Controller
End If
g_oController.addSlideShowListener(g_oListener)
End Sub
' ---------------------------------------------------------------
' Listener-Callbacks – Präfix muss "EV_" sein (s.o.)
' ---------------------------------------------------------------
Sub EV_paused(oEv)
MsgBox "EV_paused"
End Sub
Sub EV_resumed(oEv)
MsgBox "EV_resumed"
End Sub
Sub EV_slideTransitionStarted(oEv)
MsgBox "EV_slideTransitionStarted, Index: " & g_oController.getCurrentSlideIndex()
End Sub
Sub EV_slideTransitionEnded(oEv)
MsgBox "EV_slideTransitionEnded, Index: " & g_oController.getCurrentSlideIndex()
End Sub
Sub EV_slideAnimationEnded(oEv)
MsgBox "EV_slideAnimationEnded, Index: " & g_oController.getCurrentSlideIndex()
End Sub
Sub EV_slideEnded(oEv)
MsgBox "EV_slideEnded"
End Sub
Sub EV_hyperLinkClicked(oEv)
MsgBox "EV_hyperLinkClicked"
End Sub