3 messages in org.openoffice.fr.progRe: [prog] Au sujet du module math
FromSent OnAttachments
Christophe DevallandJul 1, 2008 12:35 am 
fabs...@wanadoo.frJul 12, 2008 12:46 am 
Christophe DevallandAug 17, 2008 5:38 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [prog] Au sujet du module mathActions...
From:fabs...@wanadoo.fr (fabs@wanadoo.fr)
Date:Jul 12, 2008 12:46:18 am
List:org.openoffice.fr.prog

Le Tuesday 01 July 2008 11:36:12 Christophe Devalland, vous avez écrit :

Bonjour,

désolé pour ce message un peu technique. J'ai créé une extension CmathOOo et participé au projet Dmaths. Depuis la version 2.3.1, la fonctionnalité qui nous permet d'insérer une formule est buguée (j'ai ouvert l'issue http://www.openoffice.org/issues/show_bug.cgi?id=67283 qui n'en finit pas d'être résolue mais qui ne l'est jamais). La formule n'est pas redimensionnée ce qui fait qu'elle apparaît dans une boite minuscule (voir le code basic dans l'issue). Si on clique deux fois dessus, elle prend sa taille normale. Ma question : Peut-on simuler ce double clic en OOoBasic ?

Bonjour,

Je te recopie une réponse que j'avais proposée dans le forum user sur ton problème:

J'ai écrit une petite macro qui parcours toutes formules et les réenregistre. Ca évite de les éditer toutes à la main. Je te donne le code ci-dessous:

Sub ParcoursFormules         dim i as integer         dim LesObjets as Object         dim Objet as Object         LesObjets=ThisComponent.getEmbeddedObjects         On error goto erreur         for i=0 to LesObjets.count-1                 Objet=LesObjets(i)                 if Objet.getImplementationName="SwXTextEmbeddedObject" then                         if Objet.embeddedObject.getImplementationName="com.sun.star.comp.math.FormulaDocument" then                                 Objet.embeddedObject.setmodified(true)                         endif                 endif         next i         erreur:         resume next end sub

Il faut juste être patient. Chez moi, le programme a modifié toutes les formules en à peu près 1mn40. On peut améliorer en parcourant tous les documents d'un répertoire, s'il y a beaucoup de fichiers a modifier. Pour l'écriture de la macro, je me suis inspiré d'une macro de Laurent Godard qui permet de modifier les tailles des formules.

J'espère que ça va aider à résoudre le problème, à défaut de le comprendre...

Fabien.

Merci de vos idées.

Pour info voici le code qui insère la formule :

Sub InsereFormule(oViewCursor as Object, oTextCursor as Object, sPolice as String, iTaille as Integer, sFormule as String, bModeTexte as boolean) dim obj as object

obj=ThisComponent.CreateInstance("com.sun.star.text.TextEmbeddedObject") obj.CLSID="078B7ABA-54FC-457F-8551-6147e776a997" obj.AnchorType=com.sun.star.text.TextContentAnchorType.AS_CHARACTER ThisComponent.getCurrentController().select(oTextCursor) oTextCursor.Text.insertTextContent(oTextCursor, obj, true) obj.EmbeddedObject.BaseFontHeight=iTaille obj.EmbeddedObject.FontNameVariables=sPolice obj.EmbeddedObject.FontVariablesIsItalic=true obj.EmbeddedObject.FontNameNumbers=sPolice obj.EmbeddedObject.FontNameText=sPolice obj.EmbeddedObject.FontNameFunctions=sPolice obj.EmbeddedObject.IsScaleAllBrackets=True obj.EmbeddedObject.RelativeIndexSubscript=0 obj.EmbeddedObject.RelativeIndexSuperscript=0 obj.EmbeddedObject.LeftMargin=30 obj.EmbeddedObject.RightMargin=30 obj.EmbeddedObject.RelativeSpacing=20 obj.EmbeddedObject.IsTextMode=bModeTexte obj.EmbeddedObject.formula=sFormule obj.EmbeddedObject.setmodified(TRUE) obj.LeftMargin=0 obj.RightMargin=0 oViewCursor.goLeft(1,False) oViewCursor.goRight(1,False) end sub