Page 1 sur 2

Basic Text Editor V 0.1

Publié : ven. 31/oct./2008 13:25
par Necro
Bonjour à tous,

Je viens aujourd'hui vous présenter mon premier "vrai" Programme. Il s'agît d'un éditeur de texte tout simple appelé "Basic Text Editor".

Ne vous attendez pas à un éditeur qui arrive à concurrencer Word Office ou autre...

C'est mon tout premier Programme, et je compte bien continuer à le développer, je suis fier de ce programme car j'utilise un format spécial au lieu de .RTF qui est .BTF (Basic Text File). Les données (Police d'écriture, couleur, Taille) sont sauvegardés dans un fichier de Préférences appelé nomdufichieractuel.btp (Basic Text Preferences).

Je vous préviens que c'est tout petit! Sa concurrence le bloc notes de Windows ^^, ne soyez pas trop indulgents s'il vous plaît, mon tout premier programme! :s

Voici le lien de téléchargement : http://www.penguinbyte.com/apps/pbwebst ... r_V0.1.rar * Mis à jour le 03/11/08 *
Le 31/10/08 à 16:52 -
Nouveau lien de téléchargement : http://rapidshare.de/files/40803915/Bas ... 1.rar.html

Problèmes résolus : - Pas nécessaire d'ajouter l'extension .btf lors de la sauvegarde de son fichier.
Si vous voulez les sources, demandez-moi! ^^

PS : Je tiens à préciser que je ne me suis aidé d'aucun TUTORIEL du Forum, j'ai tout codé moi-même, je me suis beaucoup aidé de l'aide (F1 F1 F1 F1 F1 XD).

EDIT : Je fais partager les sources puisque je m'attaque à un autre projet ^^

Fichier BTE_Mainfile.pb

Code : Tout sélectionner

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)

; Inclusion du Fichier généré.
IncludeFile "BTE_Includefile.pb"

; On ouvre la fenêtre principale
Open_Main_Window()


; Gestion des évènements
Repeat

        Event = WaitWindowEvent()
        
                ; Si il s'agît du Menu...
                 If Event = #PB_Event_Menu
                          
                          Select EventMenu()
                          
                                          ; Si on souhaite Ferme l'application...
                                          Case #MAIN_Exit
                                          
                                                    End
                                                    
                                                    
                                          ; Si on souhaite ouvrir un fichier texte...
                                          Case #MAIN_Open
                                          
                                                  ; On défini les variables générales...
                                                  Filter$ = "Basic Text File (*.btf)|*.btf"
                                                  Other = 0
                                                  
                                                  Get_file$ = OpenFileRequester("Sélectionnez le Fichier .BTF à Ouvrir", "", Filter$, Other)
                                                  
                                                  ; Si le fichier à été chargé...
                                                  If Get_file$
                                                        
                                                        ; On va chercher le nom du fichier...
                                                        File_name_GET$ = GetFilePart(Get_file$)
                                                        
                                                        ; On informe que le fichier à bien été chargé...
                                                        file_ready = 1
                                                        
                                                      
                                                        ;;;;;;;;;;;;;;;;;;; ON VA CHERCHER LES PREFERENCES DU FICHIER ;;;;;;;;;;;;;;;;
                                                      
                                                        ; Définition des variables générales
                                                      Check_directory_pref$ = GetCurrentDirectory()
                                                      Check_filename_pref$ = File_name_GET$
                                                      File_extension_pref$ = ".btp"
                                                      
                                                      path_pref_file$ =  Check_directory_pref$ + "/pref_files/" + Check_filename_pref$ + File_extension_pref$
                                                      
                                                      ; On ouvre le fichier préférences...
                                                      OpenPreferences(path_pref_file$)
                                                      
                                                      
                                                      ; On stock le contenu dans des variables...
                                                      Font_PREF$ = ReadPreferenceString("Font", "")
                                                      Size_PREF = ReadPreferenceFloat("Size", 0)
                                                      Color_PREF = ReadPreferenceFloat("Color", 0)
                                                      
                                                      ; Si le font n'a pas été défini... (par défaut)
                                                      If Font_PREF$ = "" And Size_PREF = 0 And Color_PREF = 0
                                                           
                                                            Font_value$ = "Arial"
                                                            Size_value = 10
                                                            Color_value = 0
                                                      
                                                      Else
                                                            
                                                            Font_value$ = Font_PREF$
                                                            Size_value = Size_PREF
                                                            Color_value = Color_PREF
                                                            
                                                      EndIf
                                                      
                                                      ; On transforme le fichier texte...
                                                      Font_bin_loaded = LoadFont(0, Font_value$, Size_value)
                                                      
                                                      
                                                      SetGadgetFont(#Editor_text, Font_bin_loaded)
                                                      SetGadgetColor(#Editor_text, #PB_Gadget_FrontColor, Color_value)
                                                      
                                                        ; On informe l'utilisateur que le fichier a été chargé avec succès...
                                                        MessageRequester("Basic Text Editor", "Fichier "+File_name_GET$+" à été Ouvert avec Succès !", 4*16)
                                                        
                                                        ; On ouvre le fichier...
                                                        Open_totally_file = OpenFile(3, Get_file$)
                                                        
                                                        ; On lis le fichier ouvert....
                                                        Readed_file$ = ReadString(3)
                                                        
                                                        ; Maintenant on met à jour l'EditorGadget...
                                                        Get_Update_Values = SetGadgetText(#Editor_text, Readed_file$)
                                                        
                                                        ; Et on ferme le fichier...
                                                        CloseFile(3) 
                                                   
                                                  ; Sinon...
                                                  Else
                                                  
                                                        ; On informe que rien ne s'est produit...
                                                        file_ready = 0
                                                  
                                                  EndIf
                                                  
                                                  
                                            ; Si on souhaite enregistrer notre Fichier...
                                            Case #MAIN_Save
                                            
                                                      ; Définition des variables générales...
                                                      S_filter$ = "Basic Text File (*.btf)|*.btf"
                                                      S_other = 0
                                            
                                                      ; Si le fichier concerné est un fichier chargé...
                                                      If file_ready = 1
                                                            
                                                            Save_file_SEND$ = SaveFileRequester("Sauvegarde d'un Fichier .BTF ", File_name_GET$, S_filter$, S_other)
                                                            
                                                            
                                                            ; On informe que le fichier va être sauvegardé...
                                                            go_save_file = 1
                                                            
                                                      ; Sinon...
                                                      Else
                                                      
                                                            Save_file_SEND$ = SaveFileRequester("Sauvegarde d'un Fichier .BTF ", "MonFichier", S_filter$, S_other)
                                                      
                                                            ; On informe que le fichier va être sauvegardé...
                                                            go_save_file = 1
                                                      
                                                      
                                                      EndIf
                                                      
                                                      
                                                      ; Si le fichier à besoin d'être enregistré...
                                                      If go_save_file = 1
                                                      
                                                                   ; On récupère le chemin complet du Fichier pour ensuite l'enregistrer...
                                                                   Path_save_file_requester$ = Save_file_SEND$

                                                                                                                                      
                                                                   ; On ouvre le fichier en question...
                                                                   Result_save_file = OpenFile(0, Path_save_file_requester$ + ".btf")
                                                                   
                                                                   ; Si le fichier existe...
                                                                   If Result_save_file And Save_file_SEND$
                                                                    
                                                                              ; On informe qu'on sauvegarde le fichier...
                                                                              File_saved = 1
                                                                   
                                                                              ; On récupère le contenu de l'EditorGadget...
                                                                               Send_values_text$ = GetGadgetText(#Editor_text)

                                                                               ; On écrit dans le fichier concerné...
                                                                               Write_Text = WriteString(0, Send_values_text$, #PB_UTF8)
                                                                              
                                                                              ; On va chercher le nom du fichier...
                                                                              File_totally_name$ = GetFilePart(Path_save_file_requester$)
                                                                              
                                                                              
                                                                              ; On affiche un message de confirmation...
                                                                              MessageRequester("Basic Text Editor", "Fichier " + File_totally_name$ + ".btf Sauvegardé avec Succès !", 4*16)
                                                                   
                                                                               ; Fermeture du Fichier...
                                                                               CloseFile(0) 
                                                                   
                                                                   EndIf
                                                                  
                                                                   
                                                      
                                                      EndIf
                                                      
                                                      
                                                      
                                                      ; Si on souhaite changer la Police d'écriture...
                                                      Case #MAIN_Font
                                                      
                                                                  ; On défini les variables générales...
                                                                  Font$ = "Arial"
                                                                  Size = 11
                                                                  
                                                                  ; On envoi la requête...
                                                                  Request_change_FONT = FontRequester(Font$, Size, #PB_FontRequester_Effects)
                                                                  
                                                                  ; On stocke les données envoyées dans de nouvelles variables...
                                                                  Font_SEND$ = SelectedFontName()
                                                                  Size_SEND = SelectedFontSize()
                                                                  Color_SEND = SelectedFontColor()

                                                                  
                                                                  
                                                                  ; On charge la Police...
                                                                  Query_LF = LoadFont(#Editor_text, Font_SEND$, Size_SEND)
                                                                  
                                                                  ; On modifie Maintenant le style d'écriture du Gadget...
                                                                  SetGadgetFont(#Editor_text,Query_LF)
                                                                  
                                                                  ; Et on modifie la couleur...
                                                                  SetGadgetColor(#Editor_text, #PB_Gadget_FrontColor, Color_SEND)
                                                                  
                                          
                                                                    
                                                                  
                                                                  ; Si on souhaite afficher le menu "A Propos..."
                                                            Case #MAIN_About
                                                                  
                                                                  MessageRequester("A Propos...", "Basic Text Editor" + Chr(10) + "------------------------------------------------" + Chr(10) + "Programmé par Necro" + Chr(10) + "Tous droits réservés", 4*16)
                                                     
                                            
                                                                  
                                                      
                                                  
                                       
                          
                          
                          
                          
                                                              EndSelect
                                                              
                                                              
                                                              ; Si on a demandé de sauvegarder le fichier...
                                                              If File_saved = 1
                                                                    
                                                                    ; Définition des variables générales...
                                                                  Check_directory$ = GetCurrentDirectory()
                                                                  Check_filename$ = GetFilePart(Path_save_file_requester$)
																																	
                                                                    
                                                                    File_extension$ = ".btp" ; Basic Text Preferences 
                                                                  
                                                                        
                                                                    
                                                                    ; On crée le fichier de préférences...
                                                                    CreatePreferences(Check_directory$ + "/pref_files/" + Check_filename$ + File_extension$)
                                                                  
                                                                    
                                                                    ; On Ouvre le fichier préférences concerné...
                                                                    OpenPreferences(Check_directory$ + "/pref_files/" + Check_filename$ + File_extension$)
                                                                    
                                                                    ; On écrit dans ce fichier...
                                                                  
                                                                        ; Pour la police...
                                                                        WritePreferenceString("Font", Font_SEND$)
                                                                  
                                                                        ; Pour la taille...
                                                                        WritePreferenceString("Size", Str(Size_SEND))
                                                                        
                                                                        ; Pour la couleur...
                                                                        WritePreferenceString("Color", Str(Color_SEND))
                                                                        
                                                                        
                                                                   ; On femre le fichier des préférences...
                                                                    ClosePreferences()
                                                                  
                                                                
                                                            EndIf
                                                          
                   EndIf
                
        
Until Event = #PB_Event_CloseWindow



; IDE Options = PureBasic 4.20 (Windows - x86)
; CursorPosition = 112
; FirstLine = 97

Fichier BTE_Includefile.pb

Code : Tout sélectionner

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Window_BTE_Editor
EndEnumeration

;- MenuBar Constants
;
Enumeration
  #MenuBar_0
EndEnumeration

Enumeration
  #MAIN_Open
  #MAIN_Save
  #MAIN_Exit
  #MAIN_Font
  #MAIN_About
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Editor_text
EndEnumeration


Procedure Open_Main_Window()
  If OpenWindow(#Window_BTE_Editor, 305, 121, 673, 383, "BTE - Basic Text Editor 0.1",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateMenu(#MenuBar_0, WindowID(#Window_BTE_Editor))
      MenuTitle("Fichier")
      MenuItem(#MAIN_Open, "Ouvrir...")
      MenuItem(#MAIN_Save, "Enregistrer")
      MenuBar()
      MenuItem(#MAIN_Exit, "Quitter")
      MenuTitle("Edition")
      MenuItem(#MAIN_Font, "Police...")
      MenuTitle("?")
      MenuItem(#MAIN_About, "A Propos")
      EndIf

      If CreateGadgetList(WindowID(#Window_BTE_Editor))
        EditorGadget(#Editor_text, 0, 0, 675, 365)
        
      EndIf
    EndIf
EndProcedure


; IDE Options = PureBasic 4.20 (Windows - x86)
; CursorPosition = 39
; FirstLine = 28



Cordialement,

Necro.

Publié : ven. 31/oct./2008 13:31
par Backup
Marche bien !! :D

Bravo :)

Publié : ven. 31/oct./2008 13:33
par Necro
Merci, je susi content ^^ xD

Il en faut pour être heureux xD

Bon je sais que c'est rien comparé à vos logiciels (surtout les tiens Dobro, tu dois pas avoir de difficultés ^^), mais je suis content ^^

Mais j'ai une question : Comment faire pour que les .btf quand on clique deux fois dessus, s'ouvrent directement avec Mon logiciel?

Publié : ven. 31/oct./2008 13:39
par Backup
Necro a écrit :Merci, je susi content ^^ xD

Il en faut pour être heureux xD

Bon je sais que c'est rien comparé à vos logiciels (surtout les tiens Dobro, tu dois pas avoir de difficultés ^^), mais je suis content ^^

Mais j'ai une question : Comment faire pour que les .btf quand on clique deux fois dessus, s'ouvrent directement avec Mon logiciel?
tu créer un fichier .btf

puis tu clique dessus avec le bouton droit de ta souris

le menu contextuel de Windows va te proposer "ouvrir Avec...."
ensuite "choisir le programme"
tu choisi cette option, et tu désigne ton prg !!


tu coche la petite case "toujours utiliser ce programme pour ouvrir ce type de fichier"

Dorénavant lorsque tu cliquera sur ce type de fichier, ton prg se lancera automatiquement

voila :D

************************************************************
de façon autonome , il faudrait que ton prg ecrive dans la base de registre

a cette clef !!
# HKEY_CLASSES_ROOT (appelé HKCR): elle contient toutes les associations de fichiers, le nom des premières clés correspond à l'extension de fichier à laquelle on s'intéresse.
Plus bas dans l'arborescence sont indiquées des clés correpondant aux noms des types de fichiers, auxquelles sont attribuées :

* l'icone par défaut (DefaultIcon)
* le type d'action associée (shell): ouvrir, exécuter, ...
voir ici :
http://www.commentcamarche.net/contents/win/winreg.php3

Publié : ven. 31/oct./2008 13:41
par Necro
XD Nan nan c'est pas sa que je voulais dire ^^, c'est en installant le logiciel : Que tout les fichiers .btf ai par défaut mon logiciel pour le lancement. Par exemple : J'installe Basic Text Editor sur mon pc... Je crée un fichier .btf, et bim! Je clique deux fois dessus et sa ouve el fichier sur mon logiciel.

Côté programmation je veux dire ^^

Publié : ven. 31/oct./2008 13:45
par Backup
mince j'etais en train de completer mon message lorsque tu as ecris ... regarde au dessus :)

Publié : ven. 31/oct./2008 13:55
par Necro
Merci beaucoup :)

Publié : ven. 31/oct./2008 13:57
par jbernard13
Necro

regarde les tutos de Kayne , tu as pas mal d'astuces pour un bloc note

Publié : ven. 31/oct./2008 16:29
par venom
salut Necro,

bon j'ai tester ton Basic Text Editor il fonctionne parfaitement chez moi mais j'ai remarquer qu'ont doit ajouté l'extension quand on nome le fichier que l'on souhaite enregistrer. :? pas terrible sa alors que c'est une operation toute simple.

je t'explique a mon avis tu a utilisé createfile() pour que quand ont enregistre il y ai un fichier .btf qui se crée.

et bien pour t'expliquer clairement l'opération voici un petit code qui te montre comment c'estr facile d'y ajouté une extension :wink: .
en claire tu a du faire un truck de ce genre la :

Code : Tout sélectionner

 CreateFile(0, NomFichier$)
si tu a fait sa et bien sache que pour y rajouté l'extension tu modifie cette phrase par :

Code : Tout sélectionner

 CreateFile(0, NomFichier$+".btf")
c'est le +".btf" qui se rajoute tout seul après le nom de fichier taper. :wink:
comme sa plus besoin de taper l'extension l'exécutable le fait tout seul.
un code tout fait pour te montrer.

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
Enumeration
  #String_0
  #Button_0
EndEnumeration

  If OpenWindow(#Window_0, 216, 0, 295, 245, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      EditorGadget(#String_0, 15, 15, 270, 175, 0)
      ButtonGadget(#Button_0, 15, 195, 270, 35, "enregistrer le texte sous")
      
    EndIf
  EndIf

  Repeat
   EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget 
      Select EventGadget()
      
       Case #Button_0
        NomFichier$ = SaveFileRequester("enregistrer sous", "", "Fichiers btf|*.btf", 0)
;---------------------------------------------------------------------------------------------------------------------------------------
         CreateFile(0, NomFichier$+".btf"); c'est ici qu'il faut modifier ton code tu rajoute juste "+.btf" est sa fait plus pro :)
;---------------------------------------------------------------------------------------------------------------------------------------
          WriteString(0, GetGadgetText(#String_0), 0)    
      
      EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow

voila a bientôt sur le forum
après si tu a procéder d'une autre manière et bien sa doit surement se rapprocher a toi de voir.



@++ :wink:

Publié : ven. 31/oct./2008 16:44
par Necro
Merci venom ;) Je vais mettre à jour le Basic Text Editor :)


Petit EDIT : Auriez-vous une astuce pour crypter/décrypter le contenu d'un fichier texte?

Publié : ven. 31/oct./2008 17:17
par Necro
Désolé double-post mais je fais partager les sources ^^


Cordialement,

Necro.

Publié : ven. 31/oct./2008 19:25
par Le Soldat Inconnu
Attention, ajouter le .btf en fin de fichier, oui, et non, cela dépend

il faut tester si l'extension est déjà présente ou non

Code : Tout sélectionner

Fichier.s = ....
If lcase(getextensionpart(fichier)) <> "btf" ; Si le fichier n'a pas la bonne extension, on l'ajoute
  fichier + ".btf"
endif

if isfilename(getfilepart(fichier))
  ; ici on sauvegarde
else
  ; ici, on dit que le nom de fichier est pas bon, du style on a mis des * ou / dedans
endif
j'espère pas avoir fait de faute, j'ai codé ca sans tester

Publié : ven. 31/oct./2008 19:28
par Anonyme2
Sinon, on fait comment pour charger ton fichier, j'arrive sur une page mais je ne vois pas ou c'est, c'est plus une page d'inscription qu'autre chose.

Denis

Publié : ven. 31/oct./2008 20:47
par Backup
Necro a écrit :Petit EDIT : Auriez-vous une astuce pour crypter/décrypter le contenu d'un fichier texte?
une petite recherche sur le forum avec les termes

"Xor"
"decodage"
"decryptage"
"cryptage"

ect... t'aurai apporté tout un tas de solution :)

voici entre autre un lien ou je donne un editeur en source et un system de codage "Xor" , mais si ça te conviens pas, je dois aussi avoir un autre system de codage, qui tiens compte de l'emplacement de la lettre codé dans le text ... mais faut que je recherche ça ...

en attendant va voir là :
http://www.purebasic.fr/french/viewtopi ... hlight=xor

mais n'hesite pas a utiliser le bouton de recherche hein ... :)

Publié : ven. 31/oct./2008 20:51
par Necro
Merci, j'avais déjà cherché mais sous "Crypter texte" ou autre du même genre... ^^