Date: prev next · Thread: first prev next last
2017 Archives by date, by thread · List index


Hallo Regina,

ich hatte Dein 'zwischendurch die UI von StarMath erscheint' so
verstanden, dass es einen bestimmten temporären Bereich gibt, wo
diese StarMath-UI aufgrund Deines Makro-Codes erscheint.

Es ist ja nicht notwendig, ein Öffnen-Fenster komplett zu
verstecken, wenn es grundsätzlich sinnvoll und notwendig ist und
hier auch nicht stört. Wenn es aber nur temporär erscheint,
eigentlich gar nicht gebraucht wird, aber dann auch wieder von
alleine verschwindet, dann würde man diesen Vorgang doch gar nicht
bemerken, wenn wie gesagt für diese Zeit die Aktualisierung / das
Neuzeichnen des Bildschirmes komplett ausgeschaltet und erst
hinterher wieder eingeschaltet würde.

Wie gesagt habe ich solch einen Workaround vor vielen, vielen Jahren
in einem anderen Zusammenhang mal miterlebt. Sorry, dass ich es
heute nicht mehr genauer benennen kann.

 .... und tschüss

            Franklin


Am 05.09.2017 um 12:53 Uhr schrieb Regina Henschel
<rb.henschel@t-online.de>:

Hallo Franklin,

danke für die Anregung. Ich weiß allerdings nicht, wie ich das
Fenster, das bei "Open" aufgeht, verstecken könnte. Die
Standardaktion für Öffnen von Fenstern ist ja "Öffnen im
Vordergrund" und was anderes macht im Normalfall auch keinen
Sinn. Und wenn ich mit dem Fenster im Nachhinein etwas mache, ist
es zu spät.

Franklin Schiftan schrieb:
Hallo Regina,

ich habe keinerlei Ahnung vom Coden, aber in anderem
Zusammenhang hatte ich mal gelesen, dass es eine Möglichkeit
geben soll, die Bildschirm-Aktualisierung vorübergehend
auszuschalten, so dass er sich nicht mehr weiter verändern kann
und quasi eingefroren wird, um sie nach der fraglichen
Codestelle erst wieder einzuschalten, so dass man dieses
UI-Aufblitzen einfach nur nicht sehen kann.

Vielleicht wäre das ja auch hier eine Möglichkeit?

.... und tschüss

Franklin


Am 04.09.2017 um 17:14 Uhr schrieb Regina Henschel 
<rb.henschel@t-online.de>:

Hallo zusammen,

wenn das Clipboard MathML enthält, dann soll dies in StarMath
umgeformt und sofort als Math-OLE object in das Textdokument
eingefügt werden. Das will ich zunächst als Makro probieren.

Meine bisherige Lösung ist am Ende der Mail. Das funktioniert
im Prinzip. Aber es ist optisch nicht schön, dass
zwischendurch die UI von StarMath erscheint. Gibt es eine
Möglichkeit das Kommando .uno:InsertMathMLClipboard auch ohne
die UI durchzuführen? Auf das Kommando kann ich leider nicht
verzichten, weil dort die ganze Umformung drinsteckt.

Langfristig möchte ich das Ganze im Code haben. Wenn jemand
dazu Tipps oder Hinweise hat, würde mich das auch freuen.

Mit freundlichem Gruß Regina



Sub PasteSpecialMathML dim bOK as boolean: bOK = FALSE dim
oDocument as variant: oDocument = ThisComponent dim
oCurrentController as variant: oCurrentController = 
oDocument.getCurrentController() dim oXCOEO as variant dim
oMathOLE as variant dim oMathFrame as variant dim oDispatcher
as variant oDispatcher =
createUnoService("com.sun.star.frame.DispatchHelper")

rem  Verify, that clipboard contains MathML dim oService as
variant oService = 
createUnoService("com.sun.star.datatransfer.clipboard.SystemClipboard")


dim oContents as variant
oContents = oService.Contents dim oVecTransferDataFlavors()
as variant oVecTransferDataFlavors =
oContents.TransferDataFlavors dim nIter as integer dim nEnd
as integer: nEnd = UBound(oVecTransferDataFlavors) dim
oCssDatatransferDataFlavor as variant dim sMime as string dim
sHuman as string dim nDataFlavorIndex as integer:
nDataFlavorIndex = nEnd+1 For nIter=0 to nEnd 
oCssDatatransferDataFlavor = oVecTransferDataFlavors(nIter) 
sMime = oCssDatatransferDataFlavor.MimeType sHuman =
oCssDatatransferDataFlavor.HumanPresentableName if sMime =
"application/mathml-presentation+xml" or sMime = 
"application/mathml+xml" or _ sHuman = "MathML" or sHuman =
"MathML Presentation" then nDataFlavorIndex = nIter exit for 
end if next nIter if nDataFlavorIndex > nEnd then msgbox("No
MathML in Clipboard") else oMathOLE = 
oDocument.createInstance("com.sun.star.text.TextEmbeddedObject")


oMathOLE.CLSID = "078B7ABA-54FC-457F-8551-6147e776a997"
oMathOLE.AnchorType =
com.sun.star.text.TextContentAnchorType.AS_CHARACTER rem
Actually insert oMathOLE at cursor position in the document 
oMathOLE.attach(oCurrentController.Selection.getByIndex(0) ) 
oMathOLE.LeftMargin = 0 oMathOLE.RightMargin = 0 
oMathOLE.Model.BaseFontHeight = oMathOLE.Anchor.CharHeight 
rem  Use the command ".uno:ImportMathMLClipboard" which does
the convertion rem  from MathML to StarMath oXCOEO =
oMathOLE.ExtendedControlOverEmbeddedObject 
oXCOEO.doVerb(com.sun.star.embed.EmbedVerbs.MS_OLEVERB_OPEN)
 oMathFrame = oMathOLE.Model.CurrentController.Frame 
oDispatcher.executeDispatch(oMathFrame,
".uno:ImportMathMLClipboard", "", 0, Array()) bOK =
oMathOLE.Model.Formula<>"" 
oDispatcher.executeDispatch(oMathFrame, ".uno:CloseDoc", "",
0, Array()) if NOT bOK then msgbox("Convertion to StarMath is
not possible.") 
oDispatcher.executeDispatch(oCurrentController.Frame, 
".uno:SwBackspace", "", 0, Array()) end if end if End Sub



-- 
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.