Re: [prog] Changement de comportement dans OOo3.1

2009-05-21 Thread Francois Gatto
Bonsoir,

Je pense qu'en codant directement au moyen des API le problème pourrait
être solutionné.

Je n'ai pas vérifié faute de disposer d'une v3.0.1 sous la main.

Voici un bout de code à tester :

sub CurrentWordUnderline
  dim oDoc as object
  dim oText as object
  dim oSelection as object
  dim oCursor as object
  oDoc=ThisComponent
  oText = oDoc.Text
  Cursor = oDoc.currentcontroller.getViewCursor()
  oSelection = oText.createTextCursorByRange(Cursor.getStart())
  oSelection.gotoStartOfWord(false)
  oSelection.gotoEndOfWord(true)
  oSelection.CharUnderline = com.sun.star.awt.FontUnderline.SINGLE
end sub

Avec ma 3.1.0 (officielle) sous Ubuntu 8.10 cela fonctionne et ne
présente pas le problème de on/off (bascule).

fabs@wanadoo.fr a écrit :
> Bonjour,
> 
> Je viens de constater un changement de comportement dans OOo3.1, par rapport 
> aux versions précédentes, dans l'enregistreur de macro lors du soulignement.
> 
> Jusqu'à présent, pour souligner un texte, j'utilisais la procédure ci-dessous 
> obtenue avec l'enregistreur de macro:
> 
> sub souligner
> dim document   as object
> dim dispatcher as object
> document   = ThisComponent.CurrentController.Frame
> dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
> dim args1(2) as new com.sun.star.beans.PropertyValue
> args1(0).Name = "Underline.Underline"
> args1(0).Value = 1
> dispatcher.executeDispatch(document, ".uno:Underline", "", 0, args1())
> end sub
> 
> Maintenant, cette procédure fait passer alternativement du soulignage au non 
> soulignage. Même comportement que si je mettais n'importe quelle chaîne de 
> caractères comme nom de l'argument args1(0).
> Dans OOo3.1, le nom de l'argument du "dispatcher" doit maintenant être 
> "Underline.LineStyle".

Mon enregistreur de macros me fournit le code suivant :
sub Main
rem --
rem define variables
dim document   as object
dim dispatcher as object
rem --
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem --
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Underline.LineStyle"
args1(0).Value = 1
args1(1).Name = "Underline.HasColor"
args1(1).Value = false
args1(2).Name = "Underline.Color"
args1(2).Value = -1

dispatcher.executeDispatch(document, ".uno:Underline", "", 0, args1())
end sub

> Problème: cet argument n'est pas reconnue dans les versions antérieures de 
> OOo...
> 
> D'où ma question: il y a-t-il moyen de faire fonctionner cette procédure dans 
> toutes les versions d'OOo?
> 
> Merci,
> 
> Cordialement,
> 
> Fabien.
> 

Francois Gatto


-
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org



Re: [prog] Changement de comportement dans OOo3.1

2009-05-23 Thread fabs . ooo
Le Thursday 21 May 2009 22:07:08 Francois Gatto, vous avez écrit :
> Bonsoir,
>
> Je pense qu'en codant directement au moyen des API le problème pourrait
> être solutionné.

Merci pour le code.
Mais je ne sais pas si je vais pouvoir l'adapter si facilement. Ca ne fait pas 
tout à fait la même chose: le soulignage se fait après coup et il faut savoir 
combien de mots souligner, ce qui peut être variable dans mon cas (chaîne de 
caractère définie par l'utilisateur)...
En tout cas, merci quand même.

> Mon enregistreur de macros me fournit le code suivant :
> sub Main
> rem --
> rem define variables
> dim document   as object
> dim dispatcher as object
> rem --
> rem get access to the document
> document   = ThisComponent.CurrentController.Frame
> dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
>
> rem --
> dim args1(2) as new com.sun.star.beans.PropertyValue
> args1(0).Name = "Underline.LineStyle"
> args1(0).Value = 1
> args1(1).Name = "Underline.HasColor"
> args1(1).Value = false
> args1(2).Name = "Underline.Color"
> args1(2).Value = -1
>
> dispatcher.executeDispatch(document, ".uno:Underline", "", 0, args1())
> end sub

Le mien aussi. J'ai un peu épuré dans mon mail précédent pour garder ce dont 
j'avais besoin.
Ce qui change entre OOo3.0 et OOo3.1, c'est le nom "Underline.LineStyle" qui 
était avant "Underline.Underline"

Quelqu'un sait-il comment récupérer la version d'OOo par code pour contourner 
le problème?

Fabien.

> > Problème: cet argument n'est pas reconnue dans les versions antérieures
> > de OOo...
> >
> > D'où ma question: il y a-t-il moyen de faire fonctionner cette procédure
> > dans toutes les versions d'OOo?
> >
> > Merci,
> >
> > Cordialement,
> >
> > Fabien.
>
> Francois Gatto
>
>
> -
> To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
> For additional commands, e-mail: prog-h...@fr.openoffice.org


-- 
Fabien Skraber
www.gestionnaire-exos.fr


-
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org



Re: [prog] Changement de comportement dans OOo3.1

2009-05-24 Thread Didier Dorange-Pattoret
Bonjour,

fabs@wanadoo.fr a écrit :
> Quelqu'un sait-il comment récupérer la version d'OOo par code pour contourner 
> le problème?
>
> Fabien.
>
>   
Function OOoNumVersion() As Integer
  'Retreives the running OOO version
  Dim aSettings, aConfigProvider
  Dim aParams2(0) As new com.sun.star.beans.PropertyValue
  Dim sProvider$, sAccess$
  sProvider = "com.sun.star.configuration.ConfigurationProvider"
  sAccess   = "com.sun.star.configuration.ConfigurationAccess"
  aConfigProvider = createUnoService(sProvider)
  aParams2(0).Name = "nodepath"
  aParams2(0).Value = "/org.openoffice.Setup/Product"
  aSettings = aConfigProvider.createInstanceWithArguments(sAccess,
aParams2())
  If aSettings.hasbyname("ooSetupVersionAboutBox") Then
  sOOOVersion = aSettings.getbyname("ooSetupVersionAboutBox")
  Else
  sOOOVersion = aSettings.getbyname("ooSetupVersion")
  EndIf
  If Len(sOOOVersion) = 3 Then sOOOVersion = sOOOVersion & ".0"
  OOoNumVersion = Cint(Mid(sOOOVersion,1,1))*100 +
Cint(Mid(sOOOVersion,3,1))*10 + Cint(Mid(sOOOVersion,5,1)) 
End Function

Cette fonction peut convenir.


-- 
Didier Dorange-Pattoret

http://www.dmaths.org
http://sesamath.net

Soutenez le projet Dmaths : rejoignez le club ou faites adhérer votre 
établissement !
http://www.dmaths.org/documentation/doku.php?id=presentation:club




Re: [prog] Changement de comportement dans OOo3.1

2009-05-24 Thread Francois Gatto
Bonjour,

Notons que le code initial est de Laurent Godard [2004] (Merci Laurent)
http://codesnippets.services.openoffice.org/Office/Office.Version.snip
Également disponible sur :
http://www.oooforum.org/forum/viewtopic.phtml?t=10003
ainsi que le document de Andrew Pitonyak (gratuit) :
http://www.pitonyak.org/AndrewMacro.odt

Francois Gatto

Didier Dorange-Pattoret a écrit :
> Bonjour,
> 
> fabs@wanadoo.fr a écrit :
>> Quelqu'un sait-il comment récupérer la version d'OOo par code pour 
>> contourner 
>> le problème?
>>
>> Fabien.
>>
>>   
> Function OOoNumVersion() As Integer
>   'Retreives the running OOO version
>   Dim aSettings, aConfigProvider
>   Dim aParams2(0) As new com.sun.star.beans.PropertyValue
>   Dim sProvider$, sAccess$
>   sProvider = "com.sun.star.configuration.ConfigurationProvider"
>   sAccess   = "com.sun.star.configuration.ConfigurationAccess"
>   aConfigProvider = createUnoService(sProvider)
>   aParams2(0).Name = "nodepath"
>   aParams2(0).Value = "/org.openoffice.Setup/Product"
>   aSettings = aConfigProvider.createInstanceWithArguments(sAccess,
> aParams2())
>   If aSettings.hasbyname("ooSetupVersionAboutBox") Then
>   sOOOVersion = aSettings.getbyname("ooSetupVersionAboutBox")
>   Else
>   sOOOVersion = aSettings.getbyname("ooSetupVersion")
>   EndIf
>   If Len(sOOOVersion) = 3 Then sOOOVersion = sOOOVersion & ".0"
>   OOoNumVersion = Cint(Mid(sOOOVersion,1,1))*100 +
> Cint(Mid(sOOOVersion,3,1))*10 + Cint(Mid(sOOOVersion,5,1)) 
> End Function
> 
> Cette fonction peut convenir.
> 
> 


-
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org



Re: [prog] Changement de comportement dans OOo3.1

2009-05-25 Thread fabs . ooo
Merci pour les réponses.

> Notons que le code initial est de Laurent Godard [2004] (Merci Laurent)

Je le noterai dans mon code.

-- 
Fabien Skraber
www.gestionnaire-exos.fr


-
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org



Re: [prog] Changement de comportement dans OOo3.1

2009-05-25 Thread Laurent Godard

Bonjour

merci francois ;)

à noter que depuis quelques temps (OOo 2.x iirc), on peut utiliser 
egalement "ooSetupVersionAboutBox" qui donne la version complete sur 3 
chiffres


HTH

Laurent

function getVersionOOO() as string
'recupère version de OOo
dim aSettings

aSettings = getConfigSetting("/org.openoffice.Setup/Product", false)
getVersionOOO=aSettings.getbyname("ooSetupVersionAboutBox")

end function

function getConfigSetting(target as string, forUpdate as boolean)
' retourne le noeud de config demandé
' exemple: aSettings = getConfigSetting( 
"/org.openoffice.Office.Common/Path/Current", false)


dim service as String ' nom du service d'acces à la configuration
dim aSettings, aConfigProvider
dim aParams(0) As new com.sun.star.beans.PropertyValue

if forUpdate then
service = "com.sun.star.configuration.ConfigurationUpdateAccess"
else
service = "com.sun.star.configuration.ConfigurationAccess"
endif

	aConfigProvider = createUnoService( 
"com.sun.star.configuration.ConfigurationProvider" )

aParams(0).Name = "nodepath"
aParams(0).Value = target
	aSettings = aConfigProvider.createInstanceWithArguments(service, 
aParams() )


getConfigSetting = aSettings

end function

-
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org