Editeur de texte avec conversion RTF HTML, à debugger !
Editeur de texte avec conversion RTF HTML, à debugger !
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
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
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Bonjour Stefou
Bien que n'etant pas un des membres éminent (et loin de là)
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%.
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.
Encore bravo.
Bien que n'etant pas un des membres éminent (et loin de là)

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%.

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.

Encore bravo.
Salut Kwai
Merci pour ta réponse et tes encouragements.
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+
Merci pour ta réponse et tes encouragements.
C'est corrigé, enfin normalementPar contre, j'ai fait F5 et le pc s'est mis à tourner a 100%. Shocked

Toujours aussi modeste.... mais un moment donné, il faudra bien que tu arrete de te faire passer pour un débutant !Bien que n'etant pas un des membres éminent (et loin de là)

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.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.

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+
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
@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.
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
La bagnole n'est peut etre plus au top non plus ....
Bref je viens d'essayer le F5 et c'est de la balle, une jolie page HTML apparait, c'est magique
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
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.

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

La bagnole n'est peut etre plus au top non plus ....

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

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

-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
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 !!!
Lio
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 !!!

Lio
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !
@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

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

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.
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
Dernière modification par Jacobus le sam. 10/mars/2007 20:45, modifié 6 fois.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...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. 

Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Re: Editeur de texte avec conversion RTF HTML, à debugger !
Salut les accros !
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

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