PureBasic

Forums PureBasic
Nous sommes le Mar 25/Juin/2019 15:14

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 10 messages ] 
Auteur Message
 Sujet du message: Un editeur ... qui demande qu'à grandir
MessagePosté: Mar 19/Sep/2017 21:27 
Hors ligne

Inscription: Jeu 07/Sep/2017 20:36
Messages: 8
Comme le répertoire, l'éditeur ne demande qu'à être amélioré ...

Sous linux, ça marche sans problème ... sous windows .... vous me direz.

Code:
;le 15.09.2017 par Paul(PE)
;linux-x64
;purebasic 5.6

ImportC ""
   gtk_text_buffer_create_tag(*buffer.GtkTextBuffer, tag_name.p-utf8, first_property_name.p-utf8, value, term= #Null)
   gtk_text_buffer_apply_tag_by_name(*buffer.GtkTextBuffer, name.p-utf8, *start, *end_)
   gtk_text_buffer_remove_tag_by_name(*buffer.GtkTextBuffer, name.p-utf8, *start, *end_)
   gtk_text_view_set_left_margin (*text_view.GtkTextView, left_margin)
   gtk_text_buffer_delete(*buffer.GtkTextBuffer,*start, *end_)
   
   gtk_text_buffer_register_deserialize_tagset(*buffer.GtkTextBuffer,name.p-utf8)
   gtk_text_buffer_deserialize_set_can_create_tags(*buffer.GtkTextBuffer,format1,term0 = #True)
   gtk_text_buffer_deserialize(*buffer0.GtkTextBuffer,*buffer1.GtkTextBuffer,format,*start,*Data,*longueur,term1 = #Null)
   
   gtk_text_buffer_get_bounds(*buffer.GtkTextBuffer,*start, *end_)
  gtk_text_buffer_register_serialize_tagset(*buffer.GtkTextBuffer,name.p-utf8)
  gtk_text_buffer_serialize(*buffer0.GtkTextBuffer,*buffer1.GtkTextBuffer,format, *start, *end_,*longueur) 
EndImport


Declare editeur_ouvrir()
Declare editeur_sauver()
Declare editeur_sauver_comme()
Declare import_dat()
Declare import_dat()
Declare taille_fonte()

Define StartIter.GtkTextIter
Define EndIter.GtkTextIter


Enumeration fenetres
  #Fenetre1
  #Fenetre_Taille_Fonte
EndEnumeration

Enumeration gadgets
  #Contain1
  #Editor
  #Bou_Reset
  #Bou_Gras
  #Bou_Italic
  #Bou_Taille
  #Bou_Fermer
 
  #Taille_Fonte_Liste
  #Bou_Taille_Fonte_Retour
 
  #Menu1
  #Menu_Nouveau
  #Menu_Ouvrir
  #Menu_Sauver
  #Menu_Sauver_Comme
  #Menu_Import_Dat
  #Menu_Export_Dat
  #Menu_Fermer
  #Menu_Couper
  #Menu_Copier
  #Menu_Coller
 
EndEnumeration

Enumeration
  #PANGO_STYLE_NORMAL
  #PANGO_STYLE_OBLIQUE
  #PANGO_WEIGHT_NORMAL = 400
  #PANGO_WEIGHT_BOLD = 900
EndEnumeration

Enumeration
  #PANGO_SCALE = 1024 
EndEnumeration

Global Filename1$, Filename2$, Filename3$
Global *Buf.GtkTextBuffer


Procedure editeur_ouvrir()
  FichierParDefaut$ = ""   
  Filtre$ = "Texte (*.txt)|*.txt;*.bat|PureBasic (*.pb)|*.pb|Tous les fichiers (*.*)|*.*"
  Filtre  = 2   
  Filename1$ = OpenFileRequester("Choisissez un fichier à  charger", FichierParDefaut$, Filtre$, Filtre)
  ClearGadgetItems(#Editor)
  If ReadFile(0, Filename1$)   
    While Eof(0) = 0         
      AddGadgetItem(#Editor, -1, ReadString(0)) 
    Wend
    CloseFile(0)
  EndIf
EndProcedure

Procedure editeur_sauver()
  If Filename1$
    Filename2$ = Filename1$
  Else
    FichierParDefaut$ = ""
    Filtre$ = "Texte (*.txt)|*.txt;*.bat|PureBasic (*.pb)|*.pb|Tous les fichiers (*.*)|*.*"
    Filtre  = 2
    Filename2$ = SaveFileRequester("Choisissez un fichier à  charger", FichierParDefaut$, Filtre$, Filtre)
  EndIf
  If CreateFile(0, Filename2$,#PB_UTF8)
    For a=0 To CountGadgetItems(#Editor)
      WriteStringN(0, GetGadgetItemText(#Editor,a))
    Next
    CloseFile(0)
  EndIf
EndProcedure

Procedure editeur_sauver_comme()
  FichierParDefaut$ = ""
  Filtre$ = "Texte (*.txt)|*.txt;*.bat|PureBasic (*.pb)|*.pb|Tous les fichiers (*.*)|*.*"
  Filtre  = 2 
  Filename3$ = SaveFileRequester("Choisissez un fichier à  charger", FichierParDefaut$, Filtre$, Filtre)
  If CreateFile(0, Filename3$,#PB_UTF8)
    For a=0 To CountGadgetItems(#Editor)
      WriteStringN(0, GetGadgetItemText(#Editor,a))
    Next
  EndIf
    CloseFile(0)
EndProcedure

Procedure import_dat()
  FichierParDefaut$ = ""
  Filtre$ = "Texte (*.txt)|*.txt;*.bat|PureBasic (*.pb)|*.pb|Tous les fichiers (*.*)|*.*"
  Filtre  = 2
  Filename3$ = OpenFileRequester("Choisissez un fichier à  charger", FichierParDefaut$, Filtre$, Filtre)
  ClearGadgetItems(#Editor)
   
EndProcedure

Procedure export_dat()
  FichierParDefaut$ = ""   ; Répertoire et fichier par défaut qui seront affichés
  Filtre$ = "Texte (*.txt)|*.txt;*.bat|PureBasic (*.pb)|*.pb|Tous les fichiers (*.*)|*.*"
  Filtre  = 2    ; utiliser  par défaut le premier des trois filtres possibles
  Filename3$ = SaveFileRequester("Choisissez un fichier à  charger", FichierParDefaut$, Filtre$, Filtre)
   ;free(Data);
EndProcedure


Procedure taille_fonte()
  If OpenWindow(#Fenetre_Taille_Fonte, 500, 405, 140, 160, "Taille_fonte", #PB_Window_SystemMenu )
    ListViewGadget(#Taille_Fonte_Liste,5,10,130,110)
    StickyWindow(#Fenetre_Taille_Fonte, #True)
   
    AddGadgetItem(#Taille_Fonte_Liste, -1, "X_Small")
    AddGadgetItem(#Taille_Fonte_Liste, -1, "Medium")
    AddGadgetItem(#Taille_Fonte_Liste, -1, "Large")
    AddGadgetItem(#Taille_Fonte_Liste, -1, "X_Large")
   
    DisableGadget(#Bou_Reset, #True)
    DisableGadget(#Bou_Gras, #True)
    DisableGadget(#Bou_Italic, #True)
    DisableGadget(#Bou_Fermer, #True)
         
   ButtonGadget(#Bou_Taille_Fonte_Retour, 5, 125, 130, 25, "Retour")     
  EndIf
EndProcedure

If OpenWindow(#Fenetre1, 200, 100, 660, 465, "")
 
      ContainerGadget(#Contain1, 5,5, 650,432,#PB_Container_Flat)
                       
      EditorGadget(#Editor, 5, 5, 640, 393,#PB_Editor_WordWrap)
      SetGadgetText(#Editor, "Le Corbeau et le Renard")
      AddGadgetItem(#Editor, -1,"Maitre Corbeau sur un arbre perché,")
      AddGadgetItem(#Editor, -1, "Tenait en son bec un fromage.")
      AddGadgetItem(#Editor, -1,"Maitre Renard par l'odeur ...")
           
      Buf = gtk_text_view_get_buffer_(GadgetID(#Editor))

      ButtonGadget(#Bou_Reset, 5, 400, 100, 20, "Reset")
      ButtonGadget(#Bou_Gras, 107, 400, 100, 20, "Gras")
      ButtonGadget(#Bou_Italic, 209, 400, 100, 20, "Italic")
      ButtonGadget(#Bou_Taille, 311, 400, 100, 20, "Taille_Font")
      ButtonGadget(#Bou_Fermer, 540, 400, 100, 20, "Fermer")
     
      If CreateMenu(#Menu1,WindowID(#Fenetre1))       
        MenuTitle("Fichier")
          MenuItem(#Menu_Nouveau, "Nouveau ...")
          MenuItem(#Menu_Ouvrir, "Ouvrir ...")
          MenuItem(#Menu_Sauver, "Sauver ...")
          MenuItem(#Menu_Sauver_Comme, "Sauver comme ...")
          MenuItem(#Menu_Import_Dat, "Import data ...")
          MenuItem(#Menu_Export_Dat, "Export data ...")
          MenuItem(#Menu_Fermer, "Fermer ...")
   
        MenuTitle("Edition")
          MenuItem(#Menu_couper, "Couper")
          MenuItem(#Menu_Copier, "Copier")
          MenuItem(#Menu_coller, "Coller")
     EndIf
     
      ;gtk_text_view_set_left_margin(GadgetID(#Editor), 10)
     
      gtk_text_buffer_create_tag(Buf, "gras", "weight",#PANGO_WEIGHT_BOLD,#Null)
      gtk_text_buffer_create_tag(Buf, "italic", "style", #PANGO_STYLE_OBLIQUE,#Null)           
      gtk_text_buffer_create_tag(Buf, "X_Small", "size", 7*#PANGO_SCALE,#Null)
      gtk_text_buffer_create_tag(Buf, "Medium", "size", 10*#PANGO_SCALE,#Null)
      gtk_text_buffer_create_tag(Buf, "Large", "size", 15*#PANGO_SCALE,#Null)
      gtk_text_buffer_create_tag(Buf, "X_Large", "size", 20*#PANGO_SCALE,#Null)
     
     
      gtk_text_buffer_get_iter_at_offset_(Buf, @StartIter, 0)
      gtk_text_buffer_get_iter_at_offset_(Buf, @EndIter, 23)
     
      gtk_text_buffer_apply_tag_by_name(Buf, "gras", @StartIter, @EndIter)
      gtk_text_buffer_apply_tag_by_name(Buf, "Large", @StartIter, @EndIter)

           
     Repeat
        Event = WaitWindowEvent()
         Select Event
               Case #PB_Event_Gadget
                    Select EventGadget()
                         Case #Bou_Reset
                           gtk_text_buffer_get_selection_bounds_(Buf, @StartIter, @EndIter)
                           gtk_text_buffer_remove_all_tags_(Buf, @StartIter, @EndIter)
                         Case #Bou_Gras
                           gtk_text_buffer_get_selection_bounds_(Buf, @StartIter, @EndIter)
                           gtk_text_buffer_apply_tag_by_name(Buf, "gras", @StartIter, @EndIter)
                         Case #Bou_Italic
                           gtk_text_buffer_get_selection_bounds_(Buf, @StartIter, @EndIter)
                           gtk_text_buffer_apply_tag_by_name(Buf, "italic", @StartIter, @EndIter)
                         Case #Bou_Taille : taille_fonte()
                             
                         Case #Bou_Fermer : End
                               
                         Case #Taille_Fonte_Liste
                             Select EventType()
                               Case #PB_EventType_LeftClick
                                 gtk_text_buffer_get_selection_bounds_(Buf, @StartIter, @EndIter)
                                          gtk_text_buffer_remove_tag_by_name(Buf, "Medium", @StartIter, @EndIter)
                                          gtk_text_buffer_remove_tag_by_name(Buf, "X_Small", @StartIter, @EndIter)
                                          gtk_text_buffer_remove_tag_by_name(Buf, "Large", @StartIter, @EndIter)
                                          gtk_text_buffer_remove_tag_by_name(Buf, "X_Large", @StartIter, @EndIter)
                                          gtk_text_buffer_apply_tag_by_name(Buf, GetGadgetText(#Taille_Fonte_Liste), @StartIter, @EndIter)
                                          DisableGadget(#Bou_Reset, #False)
                                          DisableGadget(#Bou_Gras, #False)
                                          DisableGadget(#Bou_Italic, #False)
                                          DisableGadget(#Bou_Fermer, #False)
                                          CloseWindow(#Fenetre_Taille_Fonte)
                            EndSelect                               
                               Case #Bou_Taille_Fonte_Retour
                                 DisableGadget(#Bou_Reset, #False)
                                 DisableGadget(#Bou_Gras, #False)
                                 DisableGadget(#Bou_Italic, #False)
                                 DisableGadget(#Bou_Fermer, #False)
                                 CloseWindow(#Fenetre_Taille_Fonte)
                    EndSelect
                         
            Case #PB_Event_Menu
                    Select EventMenu()
                        Case #Menu_Nouveau
                          ClearGadgetItems(#Editor)                         
                          SetActiveGadget(#Editor)
                        Case #Menu_Ouvrir : editeur_ouvrir()
                        Case #Menu_Sauver : editeur_sauver()
                        Case #Menu_Sauver_Comme : editeur_sauver_comme()
                        Case #Menu_Import_Dat :
                          import_dat()
                         
                          ReadFile(0, Filename3$)
                          long_fichier = Lof(0)                         
                          length = AllocateMemory(SizeOf(Quad))                         
                          If length
                            ReadData(0, length,SizeOf(Quad))
                          EndIf                         
                          Data0 = AllocateMemory(long_fichier-(SizeOf(Quad)))
                          If Data0
                            ReadData(0, Data0,(long_fichier-(SizeOf(Quad))))
                          EndIf 
                          CloseFile(0)
                         
                          gtk_text_buffer_get_iter_at_offset_(Buf, @StartIter, 0)
                           format0 = gtk_text_buffer_register_deserialize_tagset(Buf,"default")
                           gtk_text_buffer_deserialize_set_can_create_tags(Buf,format0,TRUE)
                           gtk_text_buffer_deserialize(Buf,Buf,format0,@StartIter,Data0,length,NULL)
                          
                        Case #Menu_Export_Dat :
                          export_dat()
                          gtk_text_buffer_get_bounds(Buf,@StartIter,@EndIter)
                          format1 = gtk_text_buffer_register_serialize_tagset(Buf,"default")
                          Data1 = gtk_text_buffer_serialize(Buf,Buf,format1,@StartIter,@EndIter,@length)
                         
                          If CreateFile(0, Filename3$)
                            WriteData(0, @length, SizeOf(Quad))
                            WriteData(0, Data1, SizeOf(Quad)*length)
                            CloseFile(0)
                          Else
                            Debug "Impossible de créer le fichier!"
                          EndIf
                        Case #Menu_Fermer : End
                    EndSelect
                     
                Case #PB_Event_CloseWindow
                         Select EventWindow()
                              Case #Fenetre1 : End
                              Case #Fenetre_Taille_Fonte
                                 DisableGadget(#Bou_Reset, #False)
                          DisableGadget(#Bou_Gras, #False)
                          DisableGadget(#Bou_Italic, #False)
                          DisableGadget(#Bou_Fermer, #False)
                          CloseWindow(#Fenetre_Taille_Fonte)
               EndSelect
         EndSelect
   ForEver
EndIf


Dernière édition par Paul le Mer 20/Sep/2017 1:35, édité 2 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Un editeur ... qui demande qu'à grandir
MessagePosté: Mar 19/Sep/2017 21:36 
Hors ligne

Inscription: Jeu 07/Sep/2017 20:36
Messages: 8
Dans le menu ... les items "import_dat et "export_dat" permettent de sauver et de charger les textes une fois mis en forme ...
Je les sauvegarde avec l'extension ".dat" car ... ils sont en binaire.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Un editeur ... qui demande qu'à grandir
MessagePosté: Mar 19/Sep/2017 21:46 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 13/Déc/2015 11:05
Messages: 649
Localisation: Allez, cherche...
Je suppose que les paquets GTK doivent être installés ? ;)

Je ne peux pas tester sur le moment, je réinstalle mon Linux :) Donc j'ai pas encore remis PB dessus, mais je te dirais quand j'aurais testé ;)

Au fait, bienvenue sur les forums ! :) (Il ne me semble pas t'avoir déja vu... ;) )

_________________
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Un editeur ... qui demande qu'à grandir
MessagePosté: Mar 19/Sep/2017 21:51 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6822
Localisation: IDF (Yvelines)
Paul a écrit:
sous windows .... vous me direz.
Ca ne pourra pas fonctionner sous windows car tu fais appel à des API propres à Linux.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Un editeur ... qui demande qu'à grandir
MessagePosté: Mar 19/Sep/2017 22:02 
Hors ligne

Inscription: Jeu 07/Sep/2017 20:36
Messages: 8
Sous windows, vous n'utilisez pas Gtk ... vous travaillez avec quelle interface graphique?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Un editeur ... qui demande qu'à grandir
MessagePosté: Mar 19/Sep/2017 22:08 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 13/Déc/2015 11:05
Messages: 649
Localisation: Allez, cherche...
@falsam : On peut tout à fait installer la lib GTK sous Windows aussi, aprés pour que ca marche, c'est un joyeux bordel, mais c'est possible.

@Paul : Tu n'as jamais utilisé Windaube? 8O En gros t'as pas le choix, l'inteface graphique fait partie intégrante du systéme qui en est dépendant. Il n'y a pas d'interface séparée du systéme comme c'est sous Linux avec GTK, Qt.... (en fait l'interface est plutot désignée par l'environnement utilisé : GNOME, KDE Plasma, Unity, Pantheon et j'en passe). D'ailleurs c'est un gros défaut de Windows a mon avis... C'est pas si compliqué de faire planter l'interface graphique, ou de la faire faire des trucs "pas prévus d'origine" ^^ Du coup aprés c'est "gênant" pour se servir du systéme ^^ *hum hum* fenêtres de taille négatives *hum hum*

_________________
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Un editeur ... qui demande qu'à grandir
MessagePosté: Mer 20/Sep/2017 13:44 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 6623
Localisation: Isere
Enfin papillon a écrit:
On peut tout à fait installer la lib GTK sous Windows
Il faut l'installer ou elle est portable ?

_________________
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Un editeur ... qui demande qu'à grandir
MessagePosté: Mer 20/Sep/2017 17:12 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 13/Déc/2015 11:05
Messages: 649
Localisation: Allez, cherche...
Il me semble que ce n'est pas portable, mais je ne sais plus... Il faudrait confirmer.

Voici un tuto sur comment l'installer : https://openclassrooms.com/courses/cree ... us-windows

_________________
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Un editeur ... qui demande qu'à grandir
MessagePosté: Mer 20/Sep/2017 19:01 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 6623
Localisation: Isere
Ah dommage...et ben...c'est rien de le dire que t'as raison !! 8O
J'ai toujours aimé le gout qu'a toujours eu CROSOFT pour la simplicité :lol:
Merci pour le lien et ta réponse 8)

_________________
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Un editeur ... qui demande qu'à grandir
MessagePosté: Mer 20/Sep/2017 22:30 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 13/Déc/2015 11:05
Messages: 649
Localisation: Allez, cherche...
De rien cher KCC, pour une fois que ma présence ici a une utilité quelconque :mrgreen:

Quand je pense que sous Linux il n'y a qu'une simple commande à entrer.... 8)
Limite c'est plus rapide d'installer un dual-boot Windows / Linux et de l'installer sur linux :lol:

_________________
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 10 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Micoute et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye