I am trying to write a basic macro (After i’ll convert it an extension) for writer which listens exist file’s loading/opening. While i read Andrew Pitonyak’s book about macros i’ve learned about Listeners. But there is no listener for com.sun.star.frame.XComponentLoader service. I want to see a dialog box when any document loaded /opened to writer. Is it possible? If yes could anyone help me to find a document about it?
sub example msgbox( thisComponent.Title ) end sub
adopt the code to your needs, store it into ……MyMakros→Standard→…
and bind it to →Tools→Customize→Events→→Open Document (
choose LibreOffice in the Optionbox below )
@karolus - simple but effective - Very Nice!
we need first to check if we just open writer:
sub example doc = thisComponent if doc.Identifier = "com.sun.star.text.TextDocument" then msgbox( doc.Title ) end if end sub
Hey \o/ Thanks for that simple and handy solution. It works for open a file while libreoffice running. But when i double click an odt document when libreoffce is off i see “
Basic Runtime Error: Property or method not found:Identifier”. I think that cause of
ThisComponent What can i use instead of
ThisComponent to specify writer component?
I cannot reproduce the Issue, it works for me also with completely closed LO and double clicking some LO-file.
to restrict your code running only on writer-docs see the example in my last comment above yours.
That error was cause of my fault. I works now correctly. Thanks.
Actually the basic information you need is in Pitonyak’s OOME book. I have only created one listener (see this link - click here ) and it appears you need to do the same.
Running the code from the link mentioned produced:
Based upon that you would have three routines to set up - StartHandler, StopHandler, and loadComponentFromURL. This last routine is where you would determine the type of document being opened (Writer, Calc, Base etc.) and if it’s the one you want (Writer in your case) display your Dialog.
Only having done this once, can’t be too much help but this may give you a start.