Page 1 sur 1

[Résolu] ScintillaGadget : Colorer une colonne d'information

Publié : jeu. 01/févr./2018 14:38
par falsam
Avec le GadgetScintilla() on peut afficher et colorer la colonne de numérotation des lignes.
On peut aussi afficher une autre colonne pour afficher par exemple les infos de pliage de code.

■ Par contre je n'arrive pas à trouver l'info pour colorer cette colonne.

Voici le code réduit à son stricte minimum.

Code : Tout sélectionner

EnableExplicit

Enumeration Form
  #mf
EndEnumeration

Enumeration Gadget  
  #Editor
EndEnumeration

;-Plan de l'application
Declare Start()

Declare MainFormShow() 
Declare MainFormResize()
Declare MainFormClose()

Declare ScintillaCallBack(Gadget, *scinotify.SCNotification)
Declare ScintillaProperties(Gadget)

Start()

Procedure Start()
  OpenWindow(#mf,  0,  0, 1024, 768, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  If InitScintilla()
    ScintillaGadget(#Editor, 0, 0, WindowWidth(#mf), WindowHeight(#mf), @ScintillaCallBack())
    ScintillaProperties(#Editor)
    SetActiveGadget(#Editor)
  EndIf
  
  BindEvent(#PB_Event_CloseWindow, @MainFormClose())
  
  Repeat : WaitWindowEvent(10) : ForEver
EndProcedure

Procedure ScintillaCallBack(Gadget, *scinotify.SCNotification)
  
EndProcedure

Procedure MainFormClose()
  End  
EndProcedure

Procedure ScintillaProperties(Gadget)
  
  ;Line numbering column 
  ScintillaSendMessage(Gadget, #SCI_SETMARGINTYPEN, 0, #SC_MARGIN_NUMBER)                
  ScintillaSendMessage(Gadget, #SCI_SETMARGINWIDTHN, 0, 50)                               
  ScintillaSendMessage(Gadget, #SCI_STYLESETBACK, #STYLE_LINENUMBER, RGB(154, 205, 50))   
  ScintillaSendMessage(Gadget, #SCI_STYLESETFORE, #STYLE_LINENUMBER, RGB(82, 86, 111))    
  
  ;Code folding (How to colour this column ?)
  ScintillaSendMessage(Gadget, #SCI_SETMARGINMASKN, 2, #SC_MASK_FOLDERS)
  ScintillaSendMessage(Gadget, #SCI_SETMARGINWIDTHN, 2, 20)
  ScintillaSendMessage(Gadget, #SCI_SETMARGINSENSITIVEN, 2, #True)
  
EndProcedure
merci de votre aide

■ Solution

Code : Tout sélectionner

ScintillaSendMessage(Gadget, #SCI_SETFOLDMARGINCOLOUR, 2, RGB(107, 142, 35))
ScintillaSendMessage(Gadget, #SCI_SETFOLDMARGINHICOLOUR, 2, RGB(107, 142, 35))

Re: ScintillaGadget : Colorer une colonne d'information

Publié : jeu. 01/févr./2018 16:48
par Ar-S
Aucune idée.. Dans la donc on trouve bien de quoi colorier les lignes mais j'ai pas vu de commande pour les "colomn"

Re: ScintillaGadget : Colorer une colonne d'information

Publié : jeu. 01/févr./2018 16:55
par falsam
Ar-S a écrit :Aucune idée.. Dans la donc on trouve bien de quoi colorier les lignes mais j'ai pas vu de commande pour les "colomn"
Ca existe pour la colonne de numération des lignes

Code : Tout sélectionner

;Line numbering column 
  ScintillaSendMessage(Gadget, #SCI_SETMARGINTYPEN, 0, #SC_MARGIN_NUMBER)                
  ScintillaSendMessage(Gadget, #SCI_SETMARGINWIDTHN, 0, 50)                               
  ScintillaSendMessage(Gadget, #SCI_STYLESETBACK, #STYLE_LINENUMBER, RGB(154, 205, 50))   
  ScintillaSendMessage(Gadget, #SCI_STYLESETFORE, #STYLE_LINENUMBER, RGB(82, 86, 111))  
ici la colonne est colorée en vert.

A droite de cette colonne j'ai ajouté une autre colonne et mystère, je ne trouve pas sur la doc officiel de Scintilla comment la colorer.

Re: ScintillaGadget : Colorer une colonne d'information

Publié : jeu. 01/févr./2018 17:19
par falsam
Ça doit être possible de le faire puis que ça existe avec l'IDE de PureBasic.

La partie droite de l'image correspond à l’éditeur que je code en ce moment. On voit que la colonne est blanche alors qu'elle est bien coloré sur l'IDE de Purebasic.

Image

Re: ScintillaGadget : Colorer une colonne d'information

Publié : jeu. 01/févr./2018 18:36
par Zorro
extrait de mon code EPB (via gosci )

Code : Tout sélectionner


	
	
	
	; voici pour colorer la petite marge a droite des numeros de lignes  
				Case #GOSCI_FOLDMARGINLOBACKCOLOR ; on peut colorer en 2 couleurs ..... 
					ScintillaSendMessage(id, #SCI_SETFOLDMARGINCOLOUR, 1, color)
					
				Case #GOSCI_FOLDMARGINHIBACKCOLOR ; deuxieme couleurs (tramé ) 
					ScintillaSendMessage(id, #SCI_SETFOLDMARGINHICOLOUR, 1, color)
					
				;************************************ 
					
					;  ici c'est pour colorer les markers 
				Case #GOSCI_FOLDMARKERSBACKCOLOR
					ScintillaSendMessage(id, #SCI_MARKERSETBACK, #SC_MARKNUM_FOLDEROPEN, color)
					ScintillaSendMessage(id, #SCI_MARKERSETBACK, #SC_MARKNUM_FOLDER, color)
					ScintillaSendMessage(id, #SCI_MARKERSETBACK, #SC_MARKNUM_FOLDERSUB, color)
					ScintillaSendMessage(id, #SCI_MARKERSETBACK, #SC_MARKNUM_FOLDERTAIL, color)
					ScintillaSendMessage(id, #SCI_MARKERSETBACK, #SC_MARKNUM_FOLDEREND, color)
					ScintillaSendMessage(id, #SCI_MARKERSETBACK, #SC_MARKNUM_FOLDEROPENMID, color)
					ScintillaSendMessage(id, #SCI_MARKERSETBACK, #SC_MARKNUM_FOLDERMIDTAIL, color)
				Case #GOSCI_FOLDMARKERSFORECOLOR
					ScintillaSendMessage(id, #SCI_MARKERSETFORE, #SC_MARKNUM_FOLDEROPEN, color)
					ScintillaSendMessage(id, #SCI_MARKERSETFORE, #SC_MARKNUM_FOLDER, color)
					ScintillaSendMessage(id, #SCI_MARKERSETFORE, #SC_MARKNUM_FOLDEREND, color)
					ScintillaSendMessage(id, #SCI_MARKERSETFORE, #SC_MARKNUM_FOLDEROPENMID, color)
		
	
; Epb

Re: ScintillaGadget : Colorer une colonne d'information

Publié : jeu. 01/févr./2018 18:46
par falsam
Merci Zorro mais je n'utilise pas cette library.

Srod m'a donné la solution sur le forum anglophone qui d'ailleurs confirme ta solution mais pas avec les mêmes constantes.

Code : Tout sélectionner

ScintillaSendMessage(Gadget, #SCI_SETFOLDMARGINCOLOUR, 2, RGB(107, 142, 35))
 ScintillaSendMessage(Gadget, #SCI_SETFOLDMARGINHICOLOUR, 2, RGB(107, 142, 35))

Re: ScintillaGadget : Colorer une colonne d'information

Publié : jeu. 01/févr./2018 19:01
par Zorro
falsam a écrit :Merci Zorro mais je n'utilise pas cette library.

Srod m'a donné la solution sur le forum anglophone qui d'ailleurs confirme ta solution mais pas avec les mêmes constantes.

Code : Tout sélectionner

ScintillaSendMessage(Gadget, #SCI_SETFOLDMARGINCOLOUR, 2, RGB(107, 142, 35))
 ScintillaSendMessage(Gadget, #SCI_SETFOLDMARGINHICOLOUR, 2, RGB(107, 142, 35))
je ne t'avais pas donné les constantes de la librairie
je t'avais donné le code finale

mon exemple

Code : Tout sélectionner

   ScintillaSendMessage(id, #SCI_SETFOLDMARGINCOLOUR, 1, color)   
   ScintillaSendMessage(id, #SCI_SETFOLDMARGINHICOLOUR, 1, color)
l'exemple de Srod

Code : Tout sélectionner

ScintillaSendMessage(Gadget, #SCI_SETFOLDMARGINCOLOUR, 2, RGB(107, 142, 35))
ScintillaSendMessage(Gadget, #SCI_SETFOLDMARGINHICOLOUR, 2, RGB(107, 142, 35)
bref .. c'est le meme code :D
forcement ... c'est le sien dans les deux cas :lol:

Re: [Résolu] ScintillaGadget : Colorer une colonne d'informa

Publié : jeu. 01/févr./2018 23:39
par falsam
@Zorro : Oops désolé j'ai lu
Zorro a écrit :extrait de mon code EPB (via gosci )
Quand j'ai vu via gosci je me suis dit pas la peine que j'aille plus loin car je ne l'utilise pas.

Re: ScintillaGadget : Colorer une colonne d'information

Publié : ven. 02/févr./2018 11:30
par Mindphazer
falsam a écrit :l’éditeur que je code en ce moment.
Intéressant ! On aura le droit de le voir ? :mrgreen:

Re: [Résolu] ScintillaGadget : Colorer une colonne d'informa

Publié : ven. 02/févr./2018 11:47
par Zorro
je ne pense pas que falsam code un editeur Pour Purebasic ... :wink:

mais je peux me tromper

Re: [Résolu] ScintillaGadget : Colorer une colonne d'informa

Publié : ven. 02/févr./2018 12:25
par Mindphazer
Zorro a écrit :je ne pense pas que falsam code un editeur Pour Purebasic ... :wink:

mais je peux me tromper
Au vu de la copie écran, ça n'a pas l'air d'être un source PB en effet...

Re: [Résolu] ScintillaGadget : Colorer une colonne d'informa

Publié : ven. 02/févr./2018 15:56
par falsam
Mindphazer a écrit :Au vu de la copie écran, ça n'a pas l'air d'être un source PB en effet...
Et tu as raison.

C'est un éditeur de code JavaScript dédié au framework Babylon.js

Complétion des mots clés.
Insertion de fragments de code depuis un menu popup
Créer par exemple un cube en javascript et l'ajouter à la scene est long à taper.
je sélectionne Box dans le menu contextuel et l'IDE génére la ligne

Code : Tout sélectionner

var myBox = BABYLON.MeshBuilder.CreateBox("myBox", { height: 1, width: 1, depth: 1 }, scene);
Visualisation du résultat 3D (F5) avec ou sans débug.