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