[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 !

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

Messagepar MantesURH17 » 10 Jan 2019 17:30

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 édition par micmac le 12 Jan 2019 18:13, édité 1 fois.
Raison: Balisage
AOO 4.1.6 sous Windows 10
MantesURH17
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 10 Jan 2019 17:26

Re: [Writer]Programmer une colorisation automatique

Messagepar marco » 11 Jan 2019 09:51

Bonjour
Se servir des styles de caractère ne serait-il pas plus simple ?
AOO 4.1.3 - Windows 7 x64 Pro
Avatar de l’utilisateur
marco
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 100
Inscrit le : 01 Jan 2006 12:10
Localisation : Schtroumpfland ouest

Re: [Writer]Programmer une colorisation automatique

Messagepar MantesURH17 » 11 Jan 2019 09:57

C'est à dire ?

J'aimerais que ça le fasse automatique entre certaines suites de caractères.
AOO 4.1.6 sous Windows 10
MantesURH17
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 10 Jan 2019 17:26

Re: [Writer]Programmer une colorisation automatique

Messagepar joel275 » 11 Jan 2019 10:23

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.
OpenOffice 4.1.2 LibreOffice 5-4-6 Windows 8.1
joel275
PassiOOnné
PassiOOnné
 
Message(s) : 706
Inscrit le : 10 Jan 2009 09:05

Re: [Writer]Programmer une colorisation automatique

Messagepar MantesURH17 » 11 Jan 2019 12:10

Ce serait la deuxième solution du coup :).
AOO 4.1.6 sous Windows 10
MantesURH17
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 10 Jan 2019 17:26

Re: [Writer]Programmer une colorisation automatique

Messagepar jeanmimi » 11 Jan 2019 12:40

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   AgrandirRéduire
(\(([.*)])+\))\(\)

Application d'un Style de caractère, appelé ici CR_Accentuation_forte :
Code : Tout sélectionner   AgrandirRéduire
\C{CR_Accentuation_forte}
LibreOffice Version: 6.2.0.2 (x64) (13 janvier 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 14665
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Re: [Writer]Programmer une colorisation automatique

Messagepar MantesURH17 » 11 Jan 2019 12:50

Je t'avouerai que je n'ais pas compris ce que tu viens de m'expliquer :|
AOO 4.1.6 sous Windows 10
MantesURH17
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 10 Jan 2019 17:26

Re: [Writer]Programmer une colorisation automatique

Messagepar Piaf » 11 Jan 2019 13:01

Bonjour
Tu peux tester
Code : Tout sélectionner   AgrandirRéduire
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
Cliquer pour l'animation
A+
Pièces jointes
Couleurs.odt
(9.52 Kio) Téléchargé 6 fois
Libre Office Version: 6.0.7 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Piaf
GourOOu
GourOOu
 
Message(s) : 5511
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Writer]Programmer une colorisation automatique

Messagepar MantesURH17 » 11 Jan 2019 13:13

Que doit-je faire du code ?
AOO 4.1.6 sous Windows 10
MantesURH17
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 10 Jan 2019 17:26

Re: [Writer]Programmer une colorisation automatique

Messagepar Piaf » 11 Jan 2019 13:29

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.0.7 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Piaf
GourOOu
GourOOu
 
Message(s) : 5511
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Writer]Programmer une colorisation automatique

Messagepar MantesURH17 » 11 Jan 2019 15:29

Jessayerai ça une fois chez moi merci
AOO 4.1.6 sous Windows 10
MantesURH17
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 10 Jan 2019 17:26

Re: [Writer]Programmer une colorisation automatique

Messagepar MantesURH17 » 11 Jan 2019 18:25

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
MantesURH17
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 10 Jan 2019 17:26

Re: [Writer]Programmer une colorisation automatique

Messagepar Piaf » 11 Jan 2019 18:49

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.0.7 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Piaf
GourOOu
GourOOu
 
Message(s) : 5511
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Writer]Programmer une colorisation automatique

Messagepar MantesURH17 » 11 Jan 2019 18:52

J'ai /* en début j'aimerais */ en fin c'est pas le même ... si ? ^^
AOO 4.1.6 sous Windows 10
MantesURH17
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 10 Jan 2019 17:26

Re: [Writer]Programmer une colorisation automatique

Messagepar Piaf » 11 Jan 2019 22:22

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.0.7 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Piaf
GourOOu
GourOOu
 
Message(s) : 5511
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Writer]Programmer une colorisation automatique

Messagepar MantesURH17 » 12 Jan 2019 10:25

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
MantesURH17
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 10 Jan 2019 17:26

Re: [Writer]Programmer une colorisation automatique

Messagepar Piaf » 12 Jan 2019 11:06

Bonjour
Le fichier modifié.
A+
Pièces jointes
Couleurs.odt
(9.53 Kio) Téléchargé 5 fois
Libre Office Version: 6.0.7 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Piaf
GourOOu
GourOOu
 
Message(s) : 5511
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Writer]Programmer une colorisation automatique

Messagepar MantesURH17 » 12 Jan 2019 16:26

Ca marche merci ! :bravo:
AOO 4.1.6 sous Windows 10
MantesURH17
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 10 Jan 2019 17:26


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)