Page 1 sur 2

Editeur de texte avec conversion RTF HTML, à debugger !

Publié : jeu. 08/mars/2007 8:30
par Stefou
Salut tous les accros de l'info

Aujourd'hui c'est noël ! Et je vous livre le code d'un editeur de texte avec les fonctions standards, police, taille de texte, gras italique souligner barrer, decallage des paragraphe, surlignage, couleur de texte.
Et aussi la conversion en HTML !

J'attends les bugs et votre avis.

Bonne journée à tous et à toutes

Stefou le ouf d'info !

http://www.tib-net.com/ecligne/03_notepad.zip

Publié : jeu. 08/mars/2007 13:01
par Stefou
Oups, un bug empechait la conversion de ma propre page de test :?

C'est corrigé !

PS : Le source est fournit dans le ZIP

Publié : jeu. 08/mars/2007 13:50
par Kwai chang caine
Bonjour Stefou

Bien que n'etant pas un des membres éminent (et loin de là) :lol: de ce forum, je suis content d'etre le premier a te féliciter de ce tres joli travail.

Il est super ton wordpad, (car il est bien supérieur au notepad) avec toutes ces fonctions supplémentaires.

Par contre, j'ai fait F5 et le pc s'est mis à tourner a 100%. 8O

Ce qui serait super, c'est de rajouter une sauvegarde plus complete avec le choix du chemin et la possibilité de sauvegarder ou charger une feuille de notre choix.

Voila une tres belle alternative aux logiciels de mr crosoft qui sont toujours trop cher, et en plus, fait avec un language que nous adorons. :wink:

Encore bravo.

Publié : jeu. 08/mars/2007 14:42
par Stefou
Salut Kwai

Merci pour ta réponse et tes encouragements.
Par contre, j'ai fait F5 et le pc s'est mis à tourner a 100%. Shocked
C'est corrigé, enfin normalement :?
Bien que n'etant pas un des membres éminent (et loin de là)
Toujours aussi modeste.... mais un moment donné, il faudra bien que tu arrete de te faire passer pour un débutant ! :wink:
Ce qui serait super, c'est de rajouter une sauvegarde plus complete avec le choix du chemin et la possibilité de sauvegarder ou charger une feuille de notre choix.
C'est un simple rajout : openfilerequester ou savefilerequester. Mais lorsque tu es en periode de test c'est toujours pénible de rentrer à chauque fois un nom de fichier. :twisted:

Le but de ce notepad n'est pas de conccurencer word, j'en ai juste besoins pour faire une interface de saisi de News (ou autre) pour des entreprises à qui je fais un site.

a+

Publié : jeu. 08/mars/2007 14:49
par bernard13
Bravo , c'est super comme programme
c'est ton premier?
en as tu d'autre et que compte tu en faire avec?

Publié : jeu. 08/mars/2007 17:32
par Kwai chang caine
@Stefou

Je te remercie à mon tour de ton compliment qui me fait énormément plaisir, j'espere tellement etre un jour réellement utile à notre grande famille. :D

Hélas et sans fausse modestie lorsque l'on voit le niveau de ce forum, je vais encore rester un paillon dans la rubrique débutant, et pourtant j'suis les 2 pieds sur l'accélérateur :lol:
La bagnole n'est peut etre plus au top non plus .... :lol:

Bref je viens d'essayer le F5 et c'est de la balle, une jolie page HTML apparait, c'est magique 8)

En tout cas en plus du coté utile, t'as eu plein de bonnes idées et des petites fonctions qui sont bien au dessus du WORDPAD.

Encore une toute petite remarque, si je peux me permettre, quand on change la couleur, ça serait cool que l'on voit l'action se faire, car lorsque l'on surligne un texte et que l'on clique la couleur du texte par exemple rien ne se passe à l'oeil et l'on pourrait croire que l'action n'a pas été prise en compte.
On ne s'apperçois que le changement a été pris en compte que lorsque l'on supprime le surlignage.
Des boutons ou bien un changement de couleur du carré cliqué en bas confirmerais bien le changement.
Dans word le texte change de couleur dans le surlignage.

Bien sur, un petit module pour imprimer et ce serais bien pour avoir un petit utilitaire indépendant, mais je crois que c'est pas mal de boulot.

Voila c'est les premieres remarques qui me sont venues au premier abord.
En tout cas encore bravo et bon courage pour la finalisation.

Merci
Excelent journée à toi :wink:

Publié : jeu. 08/mars/2007 19:34
par Patrick88
pas mal du tout...

pat

Publié : jeu. 08/mars/2007 19:37
par Dr. Dri
ajoute des racourcis pour le rendre encore plus sympa!

exemple Ctrl+G pour mettre en gras la sélection etc (comme dans word =)

Dri

Publié : ven. 09/mars/2007 12:26
par lionel_om
Un bug :
Qd on change la position du curseur (via un clic de la souris), l'information police de caractères n'est mise à jour que si on sélectionne du texte et non pas seulement par un simple clic.
Mais sinon c'est vrai que c'est pas mal du tout !!! :D

Lio

Publié : sam. 10/mars/2007 9:10
par Stefou
@Kwai chang caine
Voilà lorsque l'on colorie du texte, la selection ce retire laissans apparaitre la nouvel couleur.
Pour la fonction d'impression j'ai vu qu'elle trainait sur un forum et je devrais la mettre assez rapidement....

@Dr.Dri
Voila les raccourci sont en place, reste plus qu'a mettre une bulle sur les icones pour savoir à quoi il servent et le nom du raccourci
ctrl+ s:sauve, +n nouveau +b : barrer +i:italique +g:gras +< ou > taille de police ....

@lionel_om
En fait, lorsque l'on clic dans la fenetre de l'editor cela ne crée pas d'évenement dans purebasic. Il va certainement falloir passer par une callback....a moins que tu n'es une meilleur idée pour récupérer l'évenement "Clic" dans un editor gadget !

La nouvelle version est au même lien que la précédente
:wink:

Publié : sam. 10/mars/2007 17:56
par Jacobus
C'est du bon boulot Stefou! je pense que ça va servir à pas mal d'entre nous. Du coup je viens d'essayer de faire un mode page par page à la Word, ça irait bien avec ton notepad.
C'est un début, ça fonctionne mais c'est à compléter.
Pour tester : cliquer sur le bouton "New" affichera une nouvelle page en plaçant le curseur au début.
Ajout de l'automatisation pour le passage d'une page à l'autre en cours d'écriture.
Ouverture d'un fichier texte et ajout dans l'editeur en cours. S'il fait plus de 64 lignes, une ou plusieurs nouvelles pages sont affichées.

Code : Tout sélectionner

; Simuler Word et le changement de page avec un éditeur
; Idée initiale de Jacobus pour le notepad de Stefou 
; Editeurs dynamique, méthode extraite d'un éditeur de Flaith
; Ca reste à peaufiner...

; Inclus la création d'une nouvelle page dès que la ligne 64 est atteinte dans l'éditeur précédent
; Sur la base d'utilisation de la police par défaut.

; Pour tester, (taper quelques lignes dans le premier éditeur, puis) descendre à l'aide de la touche "Entrée"
; On passe ainsi d'une page à l'autre tout en tapant son texte.
; A faire de même avec l'ouverture d'un fichier de plus de 64 lignes...

; Ouverture d'un fichier texte et ajout dans l'editeur en cours. S'il fait plus de 64 lignes, il est ouvert sur plusieurs pages. 

;-Constantes
Enumeration
  #WinPBWordpad
  #ToolBar 
  #ToolBar_new
  #ToolBar_open
  #ToolBar_save  
  #ScrollPages
  #Editeur
  #file
  #StatusBar
EndEnumeration 
#PROGRAMNAME = "PBWordpad"
#PROGVERSION = "1.0.03.07"
#Bureau = 0
#PageWidth = 595  ; 21 cm     pour simuler le format A4
#PageHeight = 842 ; 29,7 cm
#NbLines = 64

;-Variables globales 
Global Gadget_Editor.l = 0, Num_Editor.l = 0, hEdit.l, Editeur.l

Structure GadgetEditor
  Num_Gadget.l
  Num.l
  hEdit.l
EndStructure
Global NewList ListEditor.GadgetEditor()

Procedure Select_Editor()
 Resultat = GetActiveGadget()
 If Resultat<>-1 And Resultat = Num_Editor
     Editeur.l = Gadget_Editor   
 EndIf
   ProcedureReturn Editeur.l
EndProcedure 

Procedure Nouvelle_page()
  If Select_Editor()
      NumLines = CountGadgetItems(Editeur.l)
      If NumLines = #NbLines
       ValScroll = GetGadgetAttribute(#ScrollPages, #PB_ScrollArea_InnerHeight) 
       SetGadgetAttribute(#ScrollPages, #PB_ScrollArea_InnerHeight, ValScroll+#PageHeight+60); agrandi la scrollarea d'une nouvelle page  
        OpenGadgetList(#ScrollPages)       
         AddElement(ListEditor())
          Gadget_Editor + 1
          Num_Editor + 1        
          ListEditor()\Num_Gadget = Gadget_Editor
          ListEditor()\Num        = Num_Editor
          ListEditor()\hEdit = EditorGadget(ListEditor()\Num_Gadget, 20, ValScroll, #PageWidth, #PageHeight+40); on adapte l'éditeur à la scrollarea
          SetActiveGadget(ListEditor()\Num_Gadget); activation de l'éditeur
          SendMessage_(ListEditor()\hEdit, #EM_SETTARGETDEVICE, #Null, 0); retour à la ligne dans cette nouvelle page
          SetGadgetAttribute(#ScrollPages, #PB_ScrollArea_Y, ValScroll-10)  ;on ramène la page au niveau des yeux de l'utilisateur      
        CloseGadgetList()
       EndIf
  EndIf 
EndProcedure

;-Fenêtre
 DesktopN = ExamineDesktops()
 If DesktopN<>0
 WinL = DesktopWidth(#Bureau)
 WinH = DesktopHeight(#Bureau)
 EndIf 
 
If OpenWindow(#WinPBWordpad, 0, 0, WinL-5, WinH-60, #PROGRAMNAME,  #PB_Window_SystemMenu) = 0 Or CreateGadgetList(WindowID(#WinPBWordpad)) = 0 
  End 
EndIf 
;-Toolbar 
   hToolBar = CreateToolBar(#ToolBar, WindowID(#WinPBWordpad)) 
      If hToolBar 
          ToolBarSeparator()       
          ToolBarStandardButton(#ToolBar_new, #PB_ToolBarIcon_New) :ToolBarToolTip(#ToolBar, #ToolBar_new, "Nouveau")
          ToolBarStandardButton(#ToolBar_open,  #PB_ToolBarIcon_Open) :ToolBarToolTip(#ToolBar, #ToolBar_open, "Ouvrir")
          ToolBarStandardButton(#ToolBar_save, #PB_ToolBarIcon_Save)  :ToolBarToolTip(#ToolBar, #ToolBar_save, "Enregistrer")
          ToolBarSeparator() 
      EndIf
      
ScrollFlags = #PB_ScrollArea_Center|#PB_ScrollArea_Flat 
ScrollAreaGadget(#ScrollPages,5,30,WinL-10,WindowHeight(#WinPBWordpad)-80,WindowWidth(#WinPBWordpad)-10,WindowHeight(#WinPBWordpad)*2,30,ScrollFlags)
    
    AddElement(ListEditor())
      Gadget_Editor + 1
      Num_Editor + 1        
      ListEditor()\Num_Gadget = Gadget_Editor
      ListEditor()\Num        = Num_Editor
      ListEditor()\hEdit = EditorGadget(ListEditor()\Num_Gadget, 20, ValScroll+20, #PageWidth, #PageHeight); on adapte l'éditeur à la scrollarea
      SetActiveGadget(ListEditor()\Num_Gadget); activation de l'éditeur
      SendMessage_(ListEditor()\hEdit, #EM_SETTARGETDEVICE, #Null, 0)
          
       SetGadgetAttribute(#ScrollPages, #PB_ScrollArea_InnerWidth, #PageWidth)
       SetGadgetAttribute(#ScrollPages, #PB_ScrollArea_InnerHeight, #PageHeight+40)
       
CloseGadgetList()


;-Statusbar  
  If CreateStatusBar(#StatusBar, WindowID(#WinPBWordpad))
      AddStatusBarField(WindowWidth(#WinPBWordpad)/2)
      AddStatusBarField(WindowWidth(#WinPBWordpad)/2)     
      StatusBarText(#StatusBar, 0,#PROGRAMNAME+" - "+#PROGVERSION,  #PB_StatusBar_Raised)    
      StatusBarText(#StatusBar, 1, "PB forums français"+Chr(169)+"2007", #PB_StatusBar_Raised|#PB_StatusBar_Center)
  EndIf
   

;-Programme
Repeat 
  Event = WaitWindowEvent() 
  
  If Event = #PB_Event_Menu 
      Select EventMenu()
      
      Case #ToolBar_new ; créer une nouvelle page avec un editeur
       ValScroll = GetGadgetAttribute(#ScrollPages, #PB_ScrollArea_InnerHeight) 
       SetGadgetAttribute(#ScrollPages, #PB_ScrollArea_InnerHeight, ValScroll+#PageHeight+60); agrandi la scrollarea d'une nouvelle page  
        OpenGadgetList(#ScrollPages)       
         AddElement(ListEditor())
          Gadget_Editor + 1
          Num_Editor + 1        
          ListEditor()\Num_Gadget = Gadget_Editor
          ListEditor()\Num        = Num_Editor
          ListEditor()\hEdit = EditorGadget(ListEditor()\Num_Gadget, 20, ValScroll, #PageWidth, #PageHeight+40); on adapte l'éditeur à la scrollarea
          SetActiveGadget(ListEditor()\Num_Gadget); activation de l'éditeur
          SendMessage_(ListEditor()\hEdit, #EM_SETTARGETDEVICE, #Null, 0); retour à la ligne dans cette nouvelle page
          SetGadgetAttribute(#ScrollPages, #PB_ScrollArea_Y, ValScroll-10)  ;on ramène la page au niveau des yeux de l'utilisateur      
        CloseGadgetList()
      
     Case #ToolBar_open
       file$=OpenFileRequester("Choisir fichier","c:\","*.txt",0)
       If file$
        Select_Editor()
         If ReadFile(#file,file$)
            While Eof(#file) = 0           
             AddGadgetItem(Editeur.l,-1,ReadString(#file))
             NumLines = CountGadgetItems(Editeur.l)    
             If NumLines = #NbLines
              ValScroll = GetGadgetAttribute(#ScrollPages, #PB_ScrollArea_InnerHeight) 
               SetGadgetAttribute(#ScrollPages, #PB_ScrollArea_InnerHeight, ValScroll+#PageHeight+60); agrandi la scrollarea d'une nouvelle page  
                OpenGadgetList(#ScrollPages)       
                 AddElement(ListEditor())
                  Gadget_Editor + 1
                  Num_Editor + 1        
                  ListEditor()\Num_Gadget = Gadget_Editor
                  ListEditor()\Num        = Num_Editor
                  ListEditor()\hEdit = EditorGadget(ListEditor()\Num_Gadget, 20, ValScroll, #PageWidth, #PageHeight+40); on adapte l'éditeur à la scrollarea
                  SetActiveGadget(ListEditor()\Num_Gadget); activation de l'éditeur
                  SendMessage_(ListEditor()\hEdit, #EM_SETTARGETDEVICE, #Null, 0); retour à la ligne dans cette nouvelle page
                  SetGadgetAttribute(#ScrollPages, #PB_ScrollArea_Y, ValScroll-10)  ;on ramène la page au niveau des yeux de l'utilisateur      
                CloseGadgetList()
               Select_Editor() 
               AddGadgetItem(Editeur.l,-1,ReadString(#file))
             EndIf                     
            Wend
             CloseFile(#file)
         EndIf 
       EndIf 

       
    ;  Case #ToolBar_save
      
      EndSelect 
  EndIf
  
  If Event = #PB_Event_Gadget 
    Select EventGadget()
      
     Case Gadget_Editor : Nouvelle_page() ; création auto d'une nouvelle page
         
    EndSelect
  EndIf 
    ;-End     
  If Event = #PB_Event_CloseWindow
     Quitter = 1       
  EndIf 
  
Until Quitter  
End

Publié : sam. 10/mars/2007 18:32
par bernard13
Tres bon Boulot Jacobus

Publié : dim. 11/mars/2007 9:04
par Stefou
Super ce mode page, bien vue ! 8)

Publié : dim. 11/mars/2007 13:33
par Jacobus
y a des défauts mais aussi des possibilités intéressantes mixé à ton notepad. Avec un rebargadget sur la gauche pour multiplier les fonctions ou encore un panelgadget pour ouvrir plusieurs documents de plusieurs pages. :)

Re: Editeur de texte avec conversion RTF HTML, à debugger !

Publié : mer. 18/janv./2012 19:55
par Stefou
Salut les accros ! 8)

Rien de neuf, et encore plus de tri à faire....

Je déterre ce bout de code que l'on ma demandé par MP

il est ici :
purebasic.ecligne.net/03_notepad.rar


Bonne prog à tous