Un editeur ... qui demande qu'à grandir
Publié : mar. 19/sept./2017 21:27
Comme le répertoire, l'éditeur ne demande qu'à être amélioré ...
Sous linux, ça marche sans problème ... sous windows .... vous me direz.
Sous linux, ça marche sans problème ... sous windows .... vous me direz.
Code : Tout sélectionner
;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