Page 1 of 1

Activate Math OLE without window?

PostPosted: Thu Sep 07, 2017 12:16 pm
by regina
Hi all,

I want to import MathML from Clipboard in Writer in one go, using a macro. Doing it manually, you have to insert a formula, then use the command "Import MathML from Clipboard" from its Tools menu (which is .uno:ImportMathMLClipboard), and finally click into the text document to leave Math.
I can insert a Math-object into the text document and when I activate it (MS_OLEVERB_OPEN), then I can use the dispatcher to execute the uno command. That works, but opening the Math-object generates a window. Although it will be closed in a short time, that is not nice.

Is there a way to activate a Math OLE without visible window?

The relevant part of the macro is
Code: Select all   Expand viewCollapse view
dim oDispatcher as variant
oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim oXCOEO as variant   
oXCOEO = oMathOLE.ExtendedControlOverEmbeddedObject
oXCOEO.doVerb(com.sun.star.embed.EmbedVerbs.MS_OLEVERB_OPEN)
dim oMathFrame as variant
oMathFrame = oMathOLE.Model.CurrentController.Frame
oDispatcher.executeDispatch(oMathFrame, ".uno:ImportMathMLClipboard", "", 0, Array())
oDispatcher.executeDispatch(oMathFrame, ".uno:CloseDoc", "", 0, Array())

Re: Activate Math OLE without window?

PostPosted: Sun Sep 24, 2017 8:37 am
by Zizi64
You had use the Dispatcher in your macro code. Try to write the code without usage the Dispatcher, based on the API functions...

Here is an example for the Calc:
https://forum.openoffice.org/en/forum/v ... hp?t=45282

and two for the Writer:
https://forum.openoffice.org/en/forum/v ... hp?t=57298
http://140.211.11.67/en/forum/viewtopic ... 45&t=14342

and please download and study Andrew Pitonyak's free macro books.

Re: Activate Math OLE without window?

PostPosted: Sun Sep 24, 2017 5:25 pm
by regina
The problem is not the MathOLE object itself. The problem is, that inserting MathML from clipboard is only possible by the command .uno:ImportMathMLClipboard, and that needs the dispatcher. Or do I miss something?

I will upload the entire macro. Then the problem might be clearer.