coloration syntaxique de l'editeur !!
coloration syntaxique de l'editeur !!
.....
Dernière modification par Backup le mar. 19/août/2014 14:54, modifié 3 fois.
C bon g trouver Dobro tu t'est planter sur le lien, c plus ca si je peut me permetre.
http://michel.dobro.free.fr/bidouilles/ ... source.zip
http://michel.dobro.free.fr/bidouilles/ ... source.zip
cela n'a rien a voir avec la Lib !MetalOS a écrit :Ben moi je l'utilise dans mon editeur html mais le probleme quand j'utilise la molette de la souris pour naviger dans ma source html le prog par en vrie, le contenue de mon Editor Gadget devient fou, et je ne c pas pourquoi ?
je pense que tu gère mal tes événements !
dans mon éditeur pureGolo a chaque événement de l'éditeur gadget
je réaffiche le contenu de l'éditeur (et donc sa coloration)
tu peux utiliser un callback pour le redessin par exemple

Voici comment j'utilise la lib dans mon code, c peut être pas juste et c pour ca que ca plante chez moi.
Code : Tout sélectionner
;*********************************************
; Source By MetalOS
; Utilisation de l'user lib SyntaxHighlighting
; Code pour PB 4.00
;*********************************************
Enumeration
#Window_0
EndEnumeration
Enumeration
#Editor_0
#Text_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 216, 0, 350, 292, "Colorisation syntaxique", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Window_0))
EditorGadget(#Editor_0, 15, 55, 315, 215)
TextGadget(#Text_0, 5, 5, 335, 35, "Exemple de colorisation syntaxique avec la lib SyntaxHighlighting")
EndIf
EndIf
EndProcedure
Open_Window_0()
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If Event = #PB_Event_Gadget
If GadgetID = #Editor_0
;Code de la colorisation
ClearHighlightingAll(0, RGB(0, 0, 0), 8, "Georgia", 0)
SyntaxHighlightingAll(0, "html|HTML|/html|/HTML|title|TITLE|/title|/TITLE|/HEAD|head|/head|HEAD", "|", RGB(255, 0, 0), RGB(255, 255, 255), 8, "Georgia", 0)
SyntaxHighlightingAll(0, "body|BODY|/body|/BODY|body|BODY", "|", RGB(255, 0, 0), RGB(255, 255, 255), 8, "Georgia", 0)
SyntaxHighlightingAll(0, "abbr|ABBR|/abbr|/ABBR|acronym|ACRONYM|/acronym|/ACRONYM|address|ADDRESS|/address|/ADDRESS", "|", RGB(0, 0, 255), RGB(255, 255, 255), 8, "Georgia", 0)
SyntaxHighlightingAll(0, "<>|/0/1/2/3/4/5/6/7/8/9", "/", RGB(0, 0, 255), RGB(255, 255, 255), 8, "Georgia", 0)
HideGadget(0, 0)
;fin fu code dee la colorisation
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
End
Normal tu n'utilise pas la bonne fonction 
il te faut ultiliser SyntaxHighlightingLine
car SyntaxHighlightingALL sert a recolorer l'ensemble de l'editeur !!
donc le scrool que tu voyais, c'est parcequ'il commencait a recolorer le debut puis jusqu'a la fin de ton text
en utilisant la fonction
tu ne colore Que la ligne en cour !!

il te faut ultiliser SyntaxHighlightingLine
car SyntaxHighlightingALL sert a recolorer l'ensemble de l'editeur !!
donc le scrool que tu voyais, c'est parcequ'il commencait a recolorer le debut puis jusqu'a la fin de ton text

en utilisant la fonction
SyntaxHighlightingLine
tu ne colore Que la ligne en cour !!

;*********************************************
; Source By MetalOS
; Utilisation de l'user lib SyntaxHighlighting
; Code pour PB 4.00
;*********************************************
Enumeration
#Window_0
EndEnumeration
Enumeration
#Editor_0
#Text_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow ( #Window_0 , 216, 0, 350, 292, "Colorisation syntaxique" , #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList ( WindowID ( #Window_0 ))
EditorGadget ( #Editor_0 , 15, 55, 315, 215)
TextGadget ( #Text_0 , 5, 5, 335, 35, "Exemple de colorisation syntaxique avec la lib SyntaxHighlighting" )
EndIf
EndIf
EndProcedure
Open_Window_0()
Repeat
Event = WaitWindowEvent ()
WindowID = EventWindow ()
GadgetID = EventGadget ()
EventType = EventType ()
If Event = #PB_Event_Gadget
If GadgetID = #Editor_0
;Code de la colorisation
ClearHighlightingLine (0, RGB (0, 0, 0), 8, "Georgia" , 0)
SyntaxHighlightingLine (0, "html|HTML|/html|/HTML|title|TITLE|/title|/TITLE|/HEAD|head|/head|HEAD" , "|" , RGB (255, 0, 0), RGB (255, 255, 255), 8, "Georgia" , 0)
SyntaxHighlightingLine (0, "body|BODY|/body|/BODY|body|BODY" , "|" , RGB (255, 0, 0), RGB (255, 255, 255), 8, "Georgia" , 0)
SyntaxHighlightingLine (0, "abbr|ABBR|/abbr|/ABBR|acronym|ACRONYM|/acronym|/ACRONYM|address|ADDRESS|/address|/ADDRESS" , "|" , RGB (0, 0, 255), RGB (255, 255, 255), 8, "Georgia" , 0)
SyntaxHighlightingLine (0, "<>|/0/1/2/3/4/5/6/7/8/9" , "/" , RGB (0, 0, 255), RGB (255, 255, 255), 8, "Georgia" , 0)
HideGadget (0, 0)
;fin fu code dee la colorisation
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
End
lit les commentaire de ce code 

;*********************************************
; Source By MetalOS
; Utilisation de l'user lib SyntaxHighlighting
; Code pour PB 4.00
;*********************************************
Enumeration
#Window_0
EndEnumeration
Enumeration
#Editor_0
#Text_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow ( #Window_0 , 216, 0, 350, 292, "Colorisation syntaxique" , #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList ( WindowID ( #Window_0 ))
EditorGadget ( #Editor_0 , 15, 55, 315, 215)
TextGadget ( #Text_0 , 5, 5, 335, 35, "Exemple de colorisation syntaxique avec la lib SyntaxHighlighting" )
EndIf
EndIf
EndProcedure
Open_Window_0()
; a faire une fois apres le chargement de ta page ! -<<<<<<<<<<<<<<<< DOBRO
ClearHighlightingAll (0, RGB (0, 0, 0), 8, "Georgia" , 0)
SyntaxHighlightingAll (0, "html|HTML|/html|/HTML|title|TITLE|/title|/TITLE|/HEAD|head|/head|HEAD" , "|" , RGB (255, 0, 0), RGB (255, 255, 255), 8, "Georgia" , 0)
SyntaxHighlightingAll (0, "body|BODY|/body|/BODY|body|BODY" , "|" , RGB (255, 0, 0), RGB (255, 255, 255), 8, "Georgia" , 0)
SyntaxHighlightingAll (0, "abbr|ABBR|/abbr|/ABBR|acronym|ACRONYM|/acronym|/ACRONYM|address|ADDRESS|/address|/ADDRESS" , "|" , RGB (0, 0, 255), RGB (255, 255, 255), 8, "Georgia" , 0)
SyntaxHighlightingAll (0, "<>|/0/1/2/3/4/5/6/7/8/9" , "/" , RGB (0, 0, 255), RGB (255, 255, 255), 8, "Georgia" , 0)
HideGadget (0, 0)
Repeat
Event = WaitWindowEvent ()
WindowID = EventWindow ()
GadgetID = EventGadget ()
EventType = EventType ()
If Event = #PB_Event_Gadget
If GadgetID = #Editor_0
EndIf
EndIf
; en fin de Boucle ça suffit !
; ne pas metre dans l'event editeur !! sinon il colorie en permanence ! <<<<<<<< DOBRO
;Code de la colorisation
ClearHighlightingLine (0, RGB (0, 0, 0), 8, "Georgia" , 0)
SyntaxHighlightingLine (0, "html|HTML|/html|/HTML|title|TITLE|/title|/TITLE|/HEAD|head|/head|HEAD" , "|" , RGB (255, 0, 0), RGB (255, 255, 255), 8, "Georgia" , 0)
SyntaxHighlightingLine (0, "body|BODY|/body|/BODY|body|BODY" , "|" , RGB (255, 0, 0), RGB (255, 255, 255), 8, "Georgia" , 0)
SyntaxHighlightingLine (0, "abbr|ABBR|/abbr|/ABBR|acronym|ACRONYM|/acronym|/ACRONYM|address|ADDRESS|/address|/ADDRESS" , "|" , RGB (0, 0, 255), RGB (255, 255, 255), 8, "Georgia" , 0)
SyntaxHighlightingLine (0, "<>|/0/1/2/3/4/5/6/7/8/9" , "/" , RGB (0, 0, 255), RGB (255, 255, 255), 8, "Georgia" , 0)
HideGadget (0, 0)
;fin fu code dee la colorisation
Until Event = #PB_Event_CloseWindow
End
comme expliqué dans l'exemple du dessusMetalOS a écrit :Oui mais si j'ouvre dans mon application un source html la colorisation de toute les lignes ne ce fait pas, sauf si je pointe mon curseur sur la ligne concernée.
la fonction SyntaxHighlightingAll ne sert qu'a coloré l'editeur dans son ensemble
donc tu l'execute une seule fois apres le chargement de ta page !
c'est parceque les fonctions "SyntaxHighlightingLine"Parcontre le curseur clignote asser rapidement quand j'ecrit le mot qu'il va colorer, c normale ?
etaient executées dans l'event de l'editeur
donc executé a chaque caracteres entré !
le fait de la mettre a la fin de la boucle devrai permetre d'eviter l'execution permanente

Flype avait fait un programme montrant la coloration syntaxique du SQL ici : http://www.purebasic.fr/french/viewtopic.php?t=4849
Le lien du fichier zip ne fonctionnant plus et comme j'avais déjà les sources j'ai mis le zip sur mon site ici : http://flaith.free.fr/My_files/PB/Richedit_SQL.zip
Le lien du fichier zip ne fonctionnant plus et comme j'avais déjà les sources j'ai mis le zip sur mon site ici : http://flaith.free.fr/My_files/PB/Richedit_SQL.zip
bien vu,
par contre mon source est toujours dispo sur ma page :
http://www.purebasic.fr/french/viewtopic.php?t=5075
-> tout en bas, richedit_mysql.zip
par contre mon source est toujours dispo sur ma page :
http://www.purebasic.fr/french/viewtopic.php?t=5075
-> tout en bas, richedit_mysql.zip