Page 1 sur 2

Scintilla et le HTML

Publié : ven. 19/nov./2010 9:04
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!

Re: Scintilla et le HTML

Publié : ven. 19/nov./2010 12:09
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

Re: Scintilla et le HTML

Publié : ven. 19/nov./2010 15:20
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.

Re: Scintilla et le HTML

Publié : ven. 19/nov./2010 20:04
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:

Re: Scintilla et le HTML

Publié : ven. 19/nov./2010 21:03
par comtois
je n'ai rien pris du tout, j'utilise la bibliothèque scintilla incluse dans PureBasic.

Re: Scintilla et le HTML

Publié : ven. 19/nov./2010 21:54
par Warkering
Aucun résultat non plus, déjà essayé. :(

Re: Scintilla et le HTML

Publié : sam. 20/nov./2010 10:05
par falsam
comtois a écrit :Tu parles de cet exemple?
Cette exemple n'affiche pas le gadget scintilla.

Re: Scintilla et le HTML

Publié : sam. 20/nov./2010 10:25
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.

Re: Scintilla et le HTML

Publié : dim. 21/nov./2010 19:22
par Warkering
J'ai pourtant la 64. :roll:

Re: Scintilla et le HTML

Publié : dim. 21/nov./2010 22:43
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 ?)

Re: Scintilla et le HTML

Publié : lun. 22/nov./2010 2:02
par Warkering
Je n'ai pas trouver aucune DLL 64 bits, ni aucune SciLexer.DLL qui fonctionne avec n'importe lequel de vos exemples. :|

Re: Scintilla et le HTML

Publié : lun. 22/nov./2010 2:26
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.

Re: Scintilla et le HTML

Publié : lun. 22/nov./2010 3:33
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:

Re: Scintilla et le HTML

Publié : lun. 22/nov./2010 10:11
par falsam
Tu trouveras la version 64 bits sur ce lien :)

Re: Scintilla et le HTML

Publié : lun. 22/nov./2010 12:54
par Warkering
Merci de ton aide, Falsam. Tout fonctionne parfaitement maintenant. :wink: