Scintilla et le HTML

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Scintilla et le HTML

Message par Warkering »

Bonjour!

J'ai un petit problème en cette heure tardive.
J'essaie de refaire mon Webmestro, lequel je vous dévoilerai un coup qu'il sera un peu plus avancé, puisque j'ai perdu celui-ci avec le changement de portable.
En tout cas, j'essaie d'utiliser cette fois Scintilla pour la colorisation syntaxique du HTML et possiblement du PHP et CSS. Mais je ne suis tout simplement pas capable de faire quoique se soit! :mrgreen:
J'ai un beau gadget Scintilla, mais pas de colorisation syntaxique...
J'ai essayer avec l'exemple sur Developpez, ça ne fonctionne pas. J'ai tenter d'utiliser la librairie par défaut ainsi que la SciLexer.dll intégré à l'archive de SciTE, rien non plus. Pourtant, j'écris mot pour mot l'exemple! :?

Quelqu'un aurait une idée? Juste pour l'HTML pour l'instant, le temps que je familiarise un peu avec.
À date, j'ai fait ça :

Code : Tout sélectionner

ScintillaGadget(0, 0, 0, 640, 480, 0)
  ScintillaSendMessage(#Editeur, #SCI_SETLEXER, #SCLEX_HTML)
Merci beaucoup!
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: Scintilla et le HTML

Message par Patrick88 »

Srod sur le forum anglais a pondu une lib "The GoScintilla wrapper..."

Scintilla est un composant disponible gratuitement open-source d'édition de code (pas un composant COM) créé par Neil Hodgson et est utilisé par de nombreux éditeurs, y compris l'IDE Purebasic (et JaPBe).

Scintilla expose un «flat» c-API style qui n'est pas particulièrement facile à utiliser quand on veut faire usage de certaines des installations les plus avancées sur l'offre. Par exemple, en utilisant la syntaxe style exige que nous créons notre propre «lexer» (ou de faire usage d'un produit existant) qui peut être assez délicat et complexe. Code-pliage est également mieux gérées au sein d'un analyseur syntaxique dédié.

GoScintilla est un petit utilitaire Purebasic de code source qui encapsule un lot de l'API Scintilla afin de faciliter l'utilisation du contrôle Scintilla sein de nos applications de donner à nos programmes installations de code source d'édition. Il est livré avec un analyseur syntaxique puissant petit qui est facilement configuré pour nous donner un style de syntaxe et / ou du pliage de code en fonction de certains programmes / langage de script ou d'un autre. Avec quelques lignes de code Purebasic nous pouvons avoir un contrôle entièrement configuré Scintilla et en un rien de temps et sans qu'il soit nécessaire de coder notre propre lexer.

à cette adresse http://www.nxsoftware.com/ -> Quick links (freeware) : -> GoScintilla

pat
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: Scintilla et le HTML

Message par comtois »

Tu parles de cet exemple?

Chez moi il fonctionne parfaitement avec la version 4.51, à condition de lui coller un fichier xml.

Et je viens de tester en remplaçant

Code : Tout sélectionner

ScintillaSendMessage(id, #SCI_SETLEXER,#SCLEX_XML)
par

Code : Tout sélectionner

ScintillaSendMessage(id, #SCI_SETLEXER,#SCLEX_HTML)
J'ai bien de la couleur si je colle un fichier html.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: Scintilla et le HTML

Message par Warkering »

Comtois, c'est bien de cet exemple que je parle. Aucun de mes tests ont marché, j'ai pourtant essayer avec de nombreuses librairies dynamiques différentes ( Prises sur le site de Scintilla, Notepad++, ... ) et la plupart du temps, rien ne s'affichait.

Et merci, Patrick88. J'avais déjà vu GoScintilla, mais je l'avais complètement oublier depuis le temps! :lol:
Je crois que je vais donc tenter ma cance avec celui-ci! :wink:
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: Scintilla et le HTML

Message par comtois »

je n'ai rien pris du tout, j'utilise la bibliothèque scintilla incluse dans PureBasic.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: Scintilla et le HTML

Message par Warkering »

Aucun résultat non plus, déjà essayé. :(
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Scintilla et le HTML

Message par falsam »

comtois a écrit :Tu parles de cet exemple?
Cette exemple n'affiche pas le gadget scintilla.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: Scintilla et le HTML

Message par comtois »

falsam a écrit :
comtois a écrit :Tu parles de cet exemple?
Cette exemple n'affiche pas le gadget scintilla.
Tu m'as mis la puce à l'oreille ! J'ai testé avec la version 32 bits, et en effet le gadget n'est pas affiché. Avec la version 64 bits c'est ok.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: Scintilla et le HTML

Message par Warkering »

J'ai pourtant la 64. :roll:
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Scintilla et le HTML

Message par falsam »

Si tu utilises la version 64bits de PB, alors tu dois avoir dans le dossier de ton programme le fichier SciLexer.dll en version 64 bits.

Comtois utilise des codes couleurs pas tres contrastés et je te propose d'essayer le code suivant dans lequel les couleurs des balises sont plus contrastés.

Important : (Oui je me répete :p) le SciLexer.dll doit être dans le même dossier que ton programme ou dans un dossier dont tu indiqueras le chemin.

Code : Tout sélectionner

EnableExplicit

Enumeration
  #Mainform
  #Editor
EndEnumeration

Global StyleWindows.l=#PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget

;Attention : SciLexer.dll doit etre present dans le meme dossier que votre programme
;ou bien dans un dossier dont vous aurez indiqué le chemin.
InitScintilla("SciLexer.dll") 

Procedure SetScintillaProperties(Gadget)
  ;# Init Lexer
  ScintillaSendMessage(Gadget, #SCI_SETLEXER, #SCLEX_HTML)
  
  ;# Default
  ScintillaSendMessage(Gadget, #SCI_STYLESETFORE, #STYLE_DEFAULT, #Black)
  ScintillaSendMessage(Gadget, #SCI_STYLESETBACK, #STYLE_DEFAULT, $EAFEFE)
  ScintillaSendMessage(Gadget, #SCI_STYLESETFONT,#STYLE_DEFAULT,@"Verdana")
  ScintillaSendMessage(Gadget, #SCI_STYLESETSIZE, #STYLE_DEFAULT, 12)
  
  ;# Margin Line Number
  ScintillaSendMessage(Gadget, #SCI_SETMARGINTYPEN, 0, #SC_MARGIN_NUMBER)
  ScintillaSendMessage(Gadget, #SCI_SETMARGINWIDTHN, 0, 40)
  
  ;# Margin Mask Folder
  ScintillaSendMessage(Gadget, #SCI_SETMARGINMASKN, 2, #SC_MASK_FOLDERS)
  ScintillaSendMessage(Gadget, #SCI_SETMARGINWIDTHN, 2, 15)

  ;# Set Active Line
  ScintillaSendMessage(Gadget, #SCI_SETCARETLINEVISIBLE, #True)
  ScintillaSendMessage(Gadget, #SCI_SETCARETLINEBACK, $C4FBFA)
  
  ;# Use Tabs
  ScintillaSendMessage(Gadget, #SCI_SETUSETABS, 1)
  
  ScintillaSendMessage(Gadget, #SCI_STYLECLEARALL)

  ;# Tags (Balise)
  ScintillaSendMessage(Gadget, #SCI_STYLESETFORE, #SCE_H_TAG, #Red)
  ;# Unknown Tags
  ScintillaSendMessage(Gadget, #SCI_STYLESETFORE, #SCE_H_TAGUNKNOWN, RGB($00, $00, $80))
  ;# Attributes
  ScintillaSendMessage(Gadget, #SCI_STYLESETFORE, #SCE_H_ATTRIBUTE, #Blue)
; # Unknown Attributes
  ScintillaSendMessage(Gadget, #SCI_STYLESETFORE, #SCE_H_ATTRIBUTEUNKNOWN, RGB($00, $80, $80))
; # Numbers
  ScintillaSendMessage(Gadget, #SCI_STYLESETFORE, #SCE_H_NUMBER, #Red)
; # Double quoted strings
  ScintillaSendMessage(Gadget, #SCI_STYLESETFORE, #SCE_H_DOUBLESTRING, RGB(120, 120, 120))
; # Single quoted strings
  ScintillaSendMessage(Gadget, #SCI_STYLESETFORE, #SCE_H_SINGLESTRING, RGB(120, 120, 120))
; # Other inside tag
  ScintillaSendMessage(Gadget, #SCI_STYLESETFORE, #SCE_H_OTHER, RGB($80, $00, $80))
; # Comment
  ScintillaSendMessage(Gadget, #SCI_STYLESETFORE, #SCE_H_COMMENT, #Green)
EndProcedure

Procedure MainFormShow()
  OpenWindow(#MainForm,  #PB_Ignore,  #PB_Ignore, 800, 600, "HTML Editor", StyleWindows)
  ScintillaGadget(#Editor, 10, 10, 790, 590, 0)
  
  RemoveKeyboardShortcut(#Mainform, #PB_Shortcut_Tab)
  ;Desactivation des combinaisons de touches à caractères spéciaux.
  AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control+#PB_Shortcut_B, 0)
  AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control+#PB_Shortcut_G, 0)
  AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control+#PB_Shortcut_E, 0)
  AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control+#PB_Shortcut_R, 0)
  AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control+#PB_Shortcut_O, 0)
  AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control+#PB_Shortcut_P, 0)
  AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control+#PB_Shortcut_Q, 0)
  AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control+#PB_Shortcut_S, 0)
  AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control+#PB_Shortcut_F, 0)
  AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control+#PB_Shortcut_H, 0)
  AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control+#PB_Shortcut_K, 0)
  AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control+#PB_Shortcut_W, 0)  
  AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control+#PB_Shortcut_N, 0)
  
  SetActiveGadget(#editor)
EndProcedure

Procedure MainFormResize()
  ResizeGadget(#Editor, #PB_Ignore, #PB_Ignore, WindowWidth(#MainForm)-30, WindowHeight(#Mainform)-30)
EndProcedure

MainFormShow()
SetScintillaProperties(1)

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      
    Case #PB_Event_SizeWindow
      MainFormResize()
      
    Case #PB_Event_CloseWindow
      End
  EndSelect
ForEver
Je n'ai pas testé avec PB 64Bits car je n'ai pas SciLexer.dll en version 64 bits. (La version 64 Bits existe t'elle ?)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: Scintilla et le HTML

Message par Warkering »

Je n'ai pas trouver aucune DLL 64 bits, ni aucune SciLexer.DLL qui fonctionne avec n'importe lequel de vos exemples. :|
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Scintilla et le HTML

Message par falsam »

SciLexer.dll en version 32 bits se trouvent dans cette archive. Place SciLexer.dll dans le même dossier que ton programme.

Je te donne aussi le lien d'un fichier compressé qui contient le code plus la dll.

Utilise la version 32 Bits de Pure Basic et tu verras que ça fonctionne correctement.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: Scintilla et le HTML

Message par Warkering »

Merci, mais, je sais que ça fonctionne en 32 bits, j'ai oublier de le spécifier, mais je l'ai déjà fait. Pour le lien, c'est le même que moi, mais mon problème est pour la version 64 bits. :roll:
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Scintilla et le HTML

Message par falsam »

Tu trouveras la version 64 bits sur ce lien :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: Scintilla et le HTML

Message par Warkering »

Merci de ton aide, Falsam. Tout fonctionne parfaitement maintenant. :wink:
Répondre