Ask Your Question

Inserting image in Macro is not undoable [closed]

asked 2015-09-14 13:09:02 +0200

jdm gravatar image

I'm trying to write a macro that inserts images. My problem is that the insertion does not appear in the undo stack, so the user cannot undo it. I'm doing something like (in Python):

document = XSCRIPTCONTEXT.getDocument()
page = document.getCurrentController().getCurrentPage()

graphic = document.createInstance('')

Ultimately, I'd like to wrap this into an undo context, so there is only one undo step for the whole macro (which inserts multiple images). Any ideas how to get this to appear on the undo stack?

edit retag flag offensive reopen merge delete

Closed for the following reason the question is answered, right answer was accepted by Alex Kemp
close date 2020-10-13 19:31:32.566104

1 Answer

Sort by » oldest newest most voted

answered 2017-08-26 01:19:24 +0200

librebel gravatar image

Hello @jdm,

you could use the Document UndoManager for defining your Undo Context. Like so:

# This works for a Writer Document:
def add5Graphics():
    oDesktop = XSCRIPTCONTEXT.getDesktop()
    oDoc = oDesktop.getCurrentComponent()
    if hasattr( oDoc, "Text" ):
        oDrawPage = oDoc.getDrawPage()

        oUndoManager = oDoc.getUndoManager()
        oUndoManager.enterUndoContext( "Add Five Graphic Objects" )

        from import Size
        from import Point

        for i in range(5):
            oGraphic = oDoc.createInstance( "" )
            oGraphic.setSize( Size(3000,2000) )
            oGraphic.setPosition( Point( i*3000, 1000 ) )
            oDrawPage.add( oGraphic )

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2015-09-14 13:09:02 +0200

Seen: 692 times

Last updated: Aug 26 '17