Page 1 sur 2

Couleures dans un EditorGadget

Publié : sam. 20/mars/2004 15:49
par Aranoth
Salut,

je voudrais savoir si c'est possible de faire une colorisation syntaxique dans un EditorGagdet ?

Merci

Publié : sam. 20/mars/2004 17:13
par Le Soldat Inconnu
certainement que oui car quand tu fais du copier coller de texte avec de la mise en forme, ça la garde dans l'éditeur gadget.

mais de la à savoir comment faire, ben j'aimerai bien moi aussi avoir la réponse

Publié : sam. 20/mars/2004 17:14
par Aranoth
jaPBe a été fait avec PureBASIC ? si oui alors c'est possible

Publié : sam. 20/mars/2004 17:22
par Chris
Aranoth a écrit :jaPBe a été fait avec PureBASIC ? si oui alors c'est possible
Oui, jaPBe est fait avec PureBasic.

Pour le code source, c'est ici

Chris :)

Publié : sam. 20/mars/2004 17:33
par Aranoth
Je m'y retrouve pas dans les sources de jaPBe... :? :(

Publié : sam. 20/mars/2004 19:39
par Anonyme2
Il me semble que JAPBE utilise aussi une Dll orientée gestion éditeur.

Pour les couleurs, si l'éditorgadget utilise un RichEdit il faut s'orienter vers les messages EM_SETCHARFORMAT (mettre la couleur) et EM_SETCHARFORMAT (retrouver la couleur) et remplir la/les structures CHARFORMAT et CHARFORMAT2 pour formater le texte, couleur, police etc.

Si c'est bien un RichEdit, El_Choni a fait une librairie pour les RichEdit qui pourrait peut-être fonctionner, mais je ne sais pas car je ne l'ai jamais utilisé.

Librairie dispo sur le site (exxxxxxxxxxxxxxcelent) PureArea

Publié : sam. 20/mars/2004 19:43
par Aranoth
ok merci, je met ca de coté: je verrai plus tard

Publié : sam. 20/mars/2004 19:49
par Anonyme2
SI c'est bien un RicheEdit, la lib de El_Choni permet de mettre les couleurs, alors essaye.

Publié : sam. 20/mars/2004 20:29
par nico
Ce serait intéressant d'inclure les possibilités de formattage dans l'éditor gadget.

Je me penche sur le sujet avec ce petit bout de code:

Code : Tout sélectionner

If OpenWindow(0,0,0,322,150,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"EditorGadget") And CreateGadgetList(WindowID(0)) 
  EditorGadget (0,8,8,306,133,#PB_Container_Raised) 
  AddGadgetItem(0,-1,"Texte en couleur")
  #SCF_ALL = $4
  format.CHARFORMAT
  format\cbSize=SizeOf(format)
  format\dwMask=#CFM_COLOR
  format\crTextColor=RGB(255,0,255)
  SendMessage_(GadgetID(0),#EM_SETCHARFORMAT,#SCF_ALL, format)
  Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow 
EndIf 
Comment faire pour que l'editorgadget lise un fichier formaté et non le formartage en plus du texte ?

Publié : sam. 20/mars/2004 20:38
par Aranoth
Ton code fonctionne Nico, mais comment le limiter a une portion du texte ?

Publié : sam. 20/mars/2004 20:53
par nico
Va faire un tour sur le forum anglais sur ce lien ,il y a un exemple plus complet.

Publié : sam. 20/mars/2004 23:57
par nico
Un autre, j'ai remarqué que la réponse au click sur le bouton(quel que soit le programme) en général n'est pas très bonne, je ne sais pas pourquoi:

Code : Tout sélectionner

Global couleur
couleur=0

Procedure ProcedureCallback(WindowID, Message, wParam, lParam) 
  Resultat = #PB_ProcessPureBasicEvents 
  Select Message
    Case  #WM_Paint
      Debug "ok"
      If StartDrawing(WindowOutput())
        Box(130, 10, 20, 20, couleur)
        StopDrawing()
      EndIf
  EndSelect
  ProcedureReturn Resultat 
EndProcedure 


If OpenWindow(0,0,0,300,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"EditorGadget") And CreateGadgetList(WindowID(0)) 
  EditorGadget (0,10,80,250,200,#PB_Container_Raised) 
  ButtonGadget(1, 160, 10, 100, 20, "Choisir une couleur")
  ButtonGadget(2, 20, 40, 220, 20, "Appliquer la couleur sur le texte sélectionné")
  CheckBoxGadget(3, 10, 10, 40, 20, "Italic" ) 
  CheckBoxGadget(4, 60, 10, 60, 20, "Souligné") 
  AddGadgetItem(0,-1,"Choisissez une couleur, puis")
  AddGadgetItem(0,-1,"sélectionnez une partie du texte")
  AddGadgetItem(0,-1,"et appliquez.")
  SetWindowCallback(@ProcedureCallback())
  
  Repeat
    EventID = WaitWindowEvent()

    Select EventID
      Case  #PB_EventGadget
        Select EventGadgetID()
          Case 1
            couleur = ColorRequester()
              If StartDrawing(WindowOutput())
                Box(130, 10, 20, 20, couleur)
                StopDrawing()
              EndIf
              
            Case 2
              mask=#CFM_COLOR
              If GetGadgetState(3)
                mask=mask|#CFM_ITALIC
                effect=effect|#CFE_ITALIC
              EndIf
              If GetGadgetState(4)
                mask=mask|#CFM_UNDERLINE
                effect=effect|#CFE_UNDERLINE
              EndIf              
              
              format.CHARFORMAT
              format\cbSize=SizeOf(format)
              format\dwMask=mask
              format\crTextColor=couleur
              format\dwEffects=effect
              SendMessage_(GadgetID(0),#EM_SETCHARFORMAT,#SCF_SELECTION, format)
              
          EndSelect  
     EndSelect
  Until WaitWindowEvent()=#PB_Event_CloseWindow 
EndIf 
 

Publié : dim. 21/mars/2004 20:53
par nico
Comment enregistrer le contenu de l'editorgadget avec le formatage ?

Si quelqu'un sait! :?

Publié : lun. 22/mars/2004 14:49
par Anonyme2
Personne n'a essayé d'appliquer les fonctions de la librairie de El_Choni 'RicheEdit' ? Cela peut fonctionner, sinon EL_Choni fournit avec ses lib le code assembleur de ses fonctions

Il a une fonction qui s'appelle StreamFileOut qui permet de tout sauvegarder dans un fichier RTF et la même pour charger un fichier au format RTF.

Publié : lun. 22/mars/2004 18:48
par nico
Je te remercie Denis, tes indications m'ont permis de trouver l'info sur MSDN.

:D