[Résolu][Writer]Programmer une colorisation automatique

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
MantesURH17
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 janv. 2019 16:26

[Résolu][Writer]Programmer une colorisation automatique

Message par MantesURH17 »

Bonjour, je ne sais pas si cela est possible, mais je souhaiterais pouvoir mettre une certaine couleur à mon texte suivant les caractères.
Par exemple, si j'ai un texte comme celui-ci :

Ceci est mon texte
/* Ceci est mon texte */
( Ceci est mon texte )

Si c'est possible de mettre "/* Ceci est mon texte */" en vert et "( Ceci est mon texte )" en rouge ?

Merci d'avance
Dernière modification par micmac le 12 janv. 2019 17:13, modifié 1 fois.
Raison : Balisage
AOO 4.1.6 sous Windows 10
Avatar de l’utilisateur
marco
Membre hOOnoraire
Membre hOOnoraire
Messages : 115
Inscription : 01 janv. 2006 11:10
Localisation : Schtroumpfland ouest

Re: [Writer]Programmer une colorisation automatique

Message par marco »

Bonjour
Se servir des styles de caractère ne serait-il pas plus simple ?
AOO 4.1.6 - Windows 10 x64 Pro
MantesURH17
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 janv. 2019 16:26

Re: [Writer]Programmer une colorisation automatique

Message par MantesURH17 »

C'est à dire ?

J'aimerais que ça le fasse automatique entre certaines suites de caractères.
AOO 4.1.6 sous Windows 10
joel275
InconditiOOnnel
InconditiOOnnel
Messages : 839
Inscription : 10 janv. 2009 08:05

Re: [Writer]Programmer une colorisation automatique

Message par joel275 »

Bonjour,

quand tu dis "automatique", tu veux mettre en couleurs les morceaux de textes une fois que tout le texte est tapé (par exemple en appuyant sur un bouton) ou au fur et à mesure que le texte est tapé (à chaque fois qu'on tape un caractère donné)?
dans le premier cas, une recherche avec caractères génériques et le styliste conviendrait peut-être
dans le deuxième cas, il faut faire faire une macro avec un listener, ce qui est plus compliqué à mettre en oeuvre et beaucoup plus long à faire :D

A plus.
A jour de LibreOffice et de Ubuntu
MantesURH17
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 janv. 2019 16:26

Re: [Writer]Programmer une colorisation automatique

Message par MantesURH17 »

Ce serait la deuxième solution du coup :).
AOO 4.1.6 sous Windows 10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: [Writer]Programmer une colorisation automatique

Message par jeanmimi »

Bonjour,
Le premier sujet ayant été posté sans demande de Macro, l'utilisation Rechercher&Remplacer après avoir sélectionné Expressions régulières et avoir créé un Style de caractère :
Recherche d'un mot entre parenthèses :

Code : Tout sélectionner

(\(([.*)])+\))\(\)
Application d'un Style de caractère, appelé ici CR_Accentuation_forte :

Code : Tout sélectionner

\C{CR_Accentuation_forte}
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
MantesURH17
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 janv. 2019 16:26

Re: [Writer]Programmer une colorisation automatique

Message par MantesURH17 »

Je t'avouerai que je n'ais pas compris ce que tu viens de m'expliquer :|
AOO 4.1.6 sous Windows 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Writer]Programmer une colorisation automatique

Message par Piaf »

Bonjour
Tu peux tester

Code : Tout sélectionner

Sub RegisterKeyHandler
Dim oView as Object
	oView = ThisComponent.getCurrentController
	oKeyHandler = createUnoListener("Color_", "com.sun.star.awt.XKeyHandler")
	oView.addKeyHandler(oKeyHandler)
End Sub

Sub UnregisterKeyHandler
	on error resume next
	oDocView.removeKeyHandler(oKeyHandler)
End Sub

Function Color_KeyPressed(oEv) as Boolean
Dim oDoc as Object
	Color_KeyPressed = False
End Function

Function Color_KeyReleased(oEv) As Boolean
	Color_KeyReleased = False
	oDoc = thisComponent
	curseurVisible = oDoc.CurrentController.ViewCursor
	monCurseur = oDoc.Text.createTextCursor
	Select Case oEv.KeyChar
		Case "*"
			monCurseur.gotoRange(curseurVisible, False)
			monCurseur.goLeft(2,True)
			If moncurseur.String = "/*" Then
			oDoc.CurrentController.Select(monCurseur)
			curseurVisible.CharColor = RGB(0,255,0)
			curseurvisible.goRight(2,False)
			End If
		Case "\"
			monCurseur.gotoRange(curseurVisible, False)
			monCurseur.goLeft(2,True)
			If moncurseur.String = "*\" Then
			oDoc.CurrentController.ViewCursor.CharColor = -1
			End If
		Case "("
			monCurseur.gotoRange(curseurVisible, False)
			monCurseur.goLeft(1,True)
			oDoc.CurrentController.Select(monCurseur)		
			oDoc.CurrentController.ViewCursor.CharColor = RGB(255,0,0)
			curseurvisible.goRight(1,False)
		Case ")"
			oDoc.CurrentController.ViewCursor.CharColor = -1		
	End Select	
End Function

Sub Color_disposing(oEv As Object)
End Sub
Le caractère de fin de couleur verte est la barre oblique inversée (antislash).
Couleurs.gif
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
MantesURH17
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 janv. 2019 16:26

Re: [Writer]Programmer une colorisation automatique

Message par MantesURH17 »

Que doit-je faire du code ?
AOO 4.1.6 sous Windows 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Writer]Programmer une colorisation automatique

Message par Piaf »

Re
Le code est dans le fichier mis en ligne.
Le principe est celui exposé par joel275, la mise en place d'un listener surveillant l'appuie des touches, à l'ouverture du document.
Si les caractères /* sont tapés, la couleur passe en vert, si les caractères *\ sont tapés, la couleur repasse en automatique.
Si le caractère ( est tapé, la couleur passe au rouge, si le caractère ) est tapé, la couleur repasse en automatique.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
MantesURH17
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 janv. 2019 16:26

Re: [Writer]Programmer une colorisation automatique

Message par MantesURH17 »

Jessayerai ça une fois chez moi merci
AOO 4.1.6 sous Windows 10
MantesURH17
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 janv. 2019 16:26

Re: [Writer]Programmer une colorisation automatique

Message par MantesURH17 »

Effectivement cela marche ! ^^
Où es-ce que je peux trouver ces lignes de codes et comment les remettre dans mes futurs documents ?
Merci encore !

Edit : C'est bon j'ai trouvé ! ^^
Je ne peux pas changer la fin de colorisation "*\" par "*/" ?
AOO 4.1.6 sous Windows 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Writer]Programmer une colorisation automatique

Message par Piaf »

Re
MantesURH17 a écrit :Je ne peux pas changer la fin de colorisation "*\" par "*/" ?
Tu as déjà ce caractère en début de la coloration verte.
Teste, tu verras le résultat. :)
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
MantesURH17
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 janv. 2019 16:26

Re: [Writer]Programmer une colorisation automatique

Message par MantesURH17 »

J'ai /* en début j'aimerais */ en fin c'est pas le même ... si ? ^^
AOO 4.1.6 sous Windows 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Writer]Programmer une colorisation automatique

Message par Piaf »

Re
Le déclenchement du listener se fait à chaque fois qu'un caractère du select case est tapé.
À priori */ en fin de couleur verte semble fonctionner sous AOO, pas sous LibO.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
MantesURH17
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 janv. 2019 16:26

Re: [Writer]Programmer une colorisation automatique

Message par MantesURH17 »

Comment puis je le changer ? J'ai essayer de le modifier dans le code que tu m'as donné mais ça ne semble pas fonctionner
AOO 4.1.6 sous Windows 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Writer]Programmer une colorisation automatique

Message par Piaf »

Bonjour
Le fichier modifié.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
MantesURH17
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 janv. 2019 16:26

Re: [Writer]Programmer une colorisation automatique

Message par MantesURH17 »

Ca marche merci ! :bravo:
AOO 4.1.6 sous Windows 10