Je suis en train de le refaire complètement.
J'ai plusieurs bug assez complexe et le meilleur moyen de les résoudre, c'est de repartir de zéro. Cette version est trop complexe, on dois pouvoir faire plus simple.
Donc voici le code de l'ancienne version, si ça vous intéresse. Il faut télécharger le programme sur mon site pour avoir les fichiers nécessaire à la compilation du code.
Code : Tout sélectionner
;- Fichier
#fichier0 = 0
#fichier1 = 1
#fichier2 = 2
Global adresse$, Tab.l, Tab_Reelle.l, Onglet.l, txt$, language.s, PbTab.l, PbLanguage.l, PbPref.s, FichierBak
#NbTxt = 35
Global Dim Txt.s(#NbTxt)
Global Dim liste_langue.s(20)
;- Liste des mots clés
Global Dim Mot_D.s(1000)
Global Dim Tab_D.l(1000)
Global Dim Mot_G.s(1000)
Global Dim Tab_G.l(1000)
Global Nb_Mot_D, Nb_Mot_G
;- Recents
Global Dim recent.s(4, 2)
;- Window Constants
#Window_principale = 0
#Window_aide = 1
#Window_langue = 2
;- MenuBar Constants
#Menu_bar_0 = 0
#Ouvrir = 1
#Recent1 = 2
#Recent2 = 3
#Recent3 = 4
#Recent4 = 5
#Concepteur = 6
#MENU_Langue = 8
#Ouvrir_dossier = 9
;- Gadget Constants
#Progression = 0
#Progression_Texte = 1
#Gadget_2 = 2
#Fichier_Frame = 3
#Fichier_Texte = 4
#DossierDemarrage_Texte = 5
#DossierDemarrage_Choisir = 6
#DossierDemarrage = 7
#Panel = 8
#Gadget_9 = 9
#Gadget_10 = 10
#Gadget_11 = 11
#Gadget_13 = 12
#Gadget_12 = 13
#Gadget_14 = 14
#Gadget_15 = 15
#Pref_Tab_Texte = 16
#Pref_Tab = 17
#PrefPB_Texte = 18
#PrefPB_Langue = 19
#PrefPB_Tab = 20
#Fichier_BAK = 21
#Langue = 22
#Pref_Tab_VraiTabulation = 23
Procedure ActiveOption()
DisableMenuItem(#Menu_bar_0, #MENU_Langue, PbLanguage)
DisableGadget(#Pref_Tab_Texte, PbTab)
DisableGadget(#Pref_Tab, PbTab)
DisableGadget(#Pref_Tab_VraiTabulation, PbTab)
If GetGadgetState(#Panel) = 1
SetGadgetState(#Panel, 1)
EndIf
EndProcedure
Procedure Open_Window()
#Fenetre_H = 180
#Fenetre_L = 300
#Fenetre_B = 4
If OpenWindow(#Window_principale, 0, 0, #Fenetre_L, #Fenetre_H, "PBSyntax", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
StickyWindow(#Window_principale, 1)
DragAcceptFiles_(WindowID(#Window_principale), #True)
If CreateMenu(#Menu_bar_0, WindowID(#Window_principale))
MenuTitle(Txt(14))
MenuItem(#Ouvrir, Txt(15))
MenuItem(#Ouvrir_dossier, Txt(17))
MenuBar()
OpenSubMenu(Txt(16))
MenuItem(#Recent1, "1 " + recent(1, 1))
MenuItem(#Recent2, "2 " + recent(2, 1))
MenuItem(#Recent3, "3 " + recent(3, 1))
MenuItem(#Recent4, "4 " + recent(4, 1))
CloseSubMenu()
MenuTitle("?")
MenuItem(#Concepteur, Txt(18))
MenuBar()
MenuItem(#MENU_Langue, "Select language...")
EndIf
;- Panel
PanelGadget(#Panel, 0, 0, #Fenetre_L, #Fenetre_H - MenuHeight())
AddGadgetItem(#Panel, -1, Txt(19))
x = #Fenetre_B
y = #Fenetre_B
Largeur = GetGadgetAttribute(#Panel, #PB_Panel_ItemWidth) - 2 * #Fenetre_B
Frame3DGadget(#Fichier_Frame, x, y, Largeur - 48, 48, Txt(14))
ButtonGadget(#Gadget_2, x + Largeur - 48, y, 48, 48, Txt(15))
y + 16
TextGadget(#Fichier_Texte, x + 16, y, Largeur - 48 - 16 * 2, 16, "", #PB_Text_Center)
y + 32 + 16
TextGadget(#Progression_Texte, x, y, Largeur, 16, "", #PB_Text_Center)
y + 16
ProgressBarGadget(#Progression, x, y, Largeur, 24, 0, 100)
y + 24 + 4
CheckBoxGadget(#Fichier_BAK, x, y, Largeur, 16, Txt(34))
SetGadgetState(#Fichier_BAK, FichierBak)
; Options
AddGadgetItem(#Panel, -1, Txt(20))
x = #Fenetre_B
y = #Fenetre_B
Largeur = GetGadgetAttribute(#Panel, #PB_Panel_ItemWidth) - 2 * #Fenetre_B
TextGadget(#DossierDemarrage_Texte, x, y, Largeur, 16, Txt(21))
y + 16
StringGadget(#DossierDemarrage, x, y, Largeur - 48, 24, adresse$)
ButtonGadget(#DossierDemarrage_Choisir, x + Largeur - 48, y, 48, 24, "...")
y + 24 + 8
TextGadget(#PrefPB_Texte, x, y, Largeur, 16, Txt(23))
y + 16
CheckBoxGadget(#PrefPB_Langue, x, y, Largeur / 2, 16, Txt(24))
SetGadgetState(#PrefPB_Langue, PbLanguage)
CheckBoxGadget(#PrefPB_Tab, x + Largeur / 2, y, Largeur / 2, 16, Txt(25))
SetGadgetState(#PrefPB_Tab, PbTab)
y + 16 + 8
TextGadget(#Pref_Tab_Texte, x, y, Largeur, 16, Txt(22))
y + 16
SpinGadget(#Pref_Tab, x, y, 48, 24, 0, 10)
SetGadgetState(#Pref_Tab, Tab)
SetGadgetText(#Pref_Tab, Str(Tab))
CheckBoxGadget(#Pref_Tab_VraiTabulation, x + Largeur / 2, y, Largeur / 2, 24, Txt(35))
SetGadgetState(#Pref_Tab_VraiTabulation, Tab_Reelle)
CloseGadgetList()
SetGadgetState(#Panel, Onglet)
ActiveOption()
EndIf
EndProcedure
Procedure Texte(Ligne.s, Index.l)
Mot.s = ""
For n = 1 To Index - 1
Mot = Mot + StringField(Ligne, n, " ") + " "
Next
Ligne = Mot + StringField(StringField(StringField(Ligne, Index, " "), 1, "("), 1, ".")
n = 0
NbEspace = 0
Texte = 0
Repeat
n + 1
Carac.s = Mid(Ligne, n, 1)
If Carac = " "
NbEspace + 1
ElseIf Carac = Chr(34)
Texte = 1 - Texte
EndIf
Until n > Len(Ligne)
ProcedureReturn Texte
EndProcedure
Procedure Analyse(Fichier.s)
Protected Gauche.s, Droite.s, Caractere.s, Extension.s
Extension = LCase (GetExtensionPart(Fichier))
If Extension = "pb" Or Extension = "pbi" Or Extension = "pbfl"
If FichierBak
CopyFile(Fichier, Fichier + ".bak")
EndIf
If RenameFile(Fichier, Fichier + ".pbsyntax")
SetGadgetText(#Fichier_Texte, GetFilePart(Fichier))
If OpenFile(#fichier1, Fichier)
If ReadFile(#fichier0, Fichier + ".pbsyntax")
;- phase 1
Taille = FileSize(Fichier + ".pbsyntax")
SetGadgetText(#Progression_Texte, Txt(27) + "1 / 2")
Repeat
Ligne.s = ReadString(#fichier0)
Ligne = ReplaceString(Ligne, Chr(9), " ")
Ligne = Trim(Ligne)
p = 0
Repeat
p = p + 1
Longueur = Len(Ligne)
Caractere = Mid(Ligne, p, 1)
Gauche = Trim(Left(Ligne, p - 1))
Droite = Trim(Right(Ligne, Longueur - p))
If Caractere = " " ; On élémine tous les espaces doubles
Ligne = Gauche + Caractere + Droite
ElseIf Caractere = "("
CP1.s = Right(Gauche, 1)
CP2.s = Right(Gauche, 2)
CP3.s = Right(Gauche, 3)
CP4.s = Right(Gauche, 4)
CP5.s = Right(Gauche, 5)
CP6.s = Right(Gauche, 6)
CP7.s = Right(Gauche, 7)
CP16.s = Right(Gauche, 16)
If CP1 = "+" Or CP1 = "-" Or CP1 = "*" Or CP1 = "/" Or CP1 = "," Or CP1 = "=" Or CP1 = "&" Or CP7 = " Select" Or CP5 = " Case" Or CP3 = " If" Or CP3 = " Or" Or CP4 = " And" Or CP4 = " Not" Or CP4 = " Xor" Or CP6 = " Debug" Or CP3 = " To" Or CP5 = " Step" Or CP6 = " Until" Or CP6 = " While" Or CP7 = " ElseIf" Or CP16 = " ProcedureReturn"
Ligne = Gauche + " " + Caractere + Droite
Else
Ligne = Gauche + Caractere + Droite
EndIf
ElseIf Caractere = ")"
Ligne = Gauche + Caractere + " " + Droite
ElseIf Caractere = "\"
Ligne = Gauche + Caractere + Droite
ElseIf Caractere = "|" Or Caractere = "!" Or Caractere = "&"
Ligne = Gauche + " " + Caractere + " " + Droite
ElseIf Caractere = ":"
If Droite <> ""
Ligne = Gauche + " " + Caractere + " " + Droite
Else
Ligne = Gauche + Caractere + Droite
EndIf
ElseIf Caractere = "~" Or Caractere = "@" Or Caractere = "%"
CP1.s = Right(Gauche, 1)
If CP1 = "(" Or CP1 = "["
Ligne = Gauche + Caractere + Droite
Else
Ligne = Gauche + " " + Caractere + Droite
EndIf
ElseIf Caractere = "+" Or Caractere = "/" Or Caractere = "*" Or Caractere = "-"
CP1.s = Right(Gauche, 1)
CP2.s = Right(Gauche, 2)
CP3.s = Right(Gauche, 3)
CP4.s = Right(Gauche, 4)
CP5.s = Right(Gauche, 5)
CP6.s = Right(Gauche, 6)
CP9.s = Right(Gauche, 9)
CP15.s = Right(Gauche, 15)
If CP1 = "," Or CP1 = "=" Or CP1 = ">" Or CP1 = "<" Or CP1 = "+" Or CP1 = "-" Or CP1 = "/" Or CP1 = "*" Or CP1 = "!" Or CP1 = "~" Or CP1 = "|" Or CP1 = ":" Or CP1 = "&" Or CP6 = "Select" Or CP4 = "Case" Or CP4 = "With" Or CP2 = "If" Or CP3 = " Or" Or CP4 = " And" Or CP4 = " Not" Or CP4 = " Xor" Or CP5 = "Debug" Or CP3 = " To" Or CP4 = "Step" Or CP5 = "Until" Or CP5 = "While" Or CP6 = "ElseIf" Or CP9 = "Protected" Or CP6 = "Shared" Or CP6 = "Global" Or CP6 = "Static" Or CP15 = "ProcedureReturn"
Caractere = " " + Caractere
ElseIf CP1 <> "(" And CP1 <> "" And CP1 <> "@" And CP1 <> "["
Caractere = " " + Caractere + " "
EndIf
Ligne = Gauche + Caractere + Droite
ElseIf Caractere = ","
Ligne = Gauche + Caractere + " " + Droite
ElseIf Caractere = "=" Or Caractere = ">" Or Caractere = "<"
CP1 = Right(Gauche, 1)
If CP1 = ">" Or CP1 = "<"
Caractere = Caractere + " "
Else
Caractere = " " + Caractere + " "
EndIf
Ligne = Gauche + Caractere + Droite
ElseIf Caractere = Chr(34)
Repeat
p = p + 1
Caractere = Mid(Ligne, p, 1)
Until Caractere = Chr(34)
ElseIf Caractere = "'"
Repeat
p = p + 1
Caractere = Mid(Ligne, p, 1)
Until Caractere = "'"
ElseIf Caractere = ";"
If Gauche <> ""
Caractere = " " + Caractere
EndIf
Caractere_Suivant1.s = Left(Droite, 1)
Caractere_Suivant2.s = Left(Droite, 2)
Caractere_Suivant3.s = Left(Droite, 3)
If Caractere_Suivant2 = "- " Or Caractere_Suivant2 = "{ " Or Caractere_Suivant3 = "{- " Or Caractere_Suivant2 = "} " Or Caractere_Suivant3 = "}- " Or Caractere_Suivant2 = "/ "Or Caractere_Suivant2 = "[ " Or Caractere_Suivant2 = "] "
Ligne = Gauche + Caractere + Droite
ElseIf Caractere_Suivant2 = "{-"
Ligne = Gauche + Caractere + "{- " + Right(Droite, Len(Droite) - 2)
ElseIf Caractere_Suivant2 = "}-"
Ligne = Gauche + Caractere + "}- " + Right(Droite, Len(Droite) - 2)
ElseIf Caractere_Suivant1 = "-" Or Caractere_Suivant1 = "{" Or Caractere_Suivant1 = "}" Or Caractere_Suivant1 = "/" Or Caractere_Suivant1 = "[" Or Caractere_Suivant1 = "]"
Ligne = Gauche + Caractere + Caractere_Suivant1 + " " + Right(Droite, Len(Droite) - 1)
Else
Ligne = Gauche + Caractere + " " + Droite
EndIf
p = Longueur
EndIf
Until p >= Longueur
If Eof(#Fichier0)
WriteString(#Fichier1, Ligne)
Else
WriteStringN(#Fichier1, Ligne)
EndIf
SetGadgetState(#Progression, Round(100 * Loc(#Fichier0) / Taille, 1))
Until Eof(#Fichier0)
CloseFile(#Fichier0)
CloseFile(#Fichier1)
DeleteFile(Fichier + ".pbsyntax")
;- phase 2
; MessageRequester("","OK",0)
RenameFile(Fichier, Fichier + ".pbsyntax")
OpenFile(#Fichier1, Fichier)
ReadFile(#Fichier0, Fichier + ".pbsyntax")
NbEspace = 0
Taille = FileSize(Fichier + ".pbsyntax")
SetGadgetText(#Progression_Texte, txt(28) + "2 / 2")
Repeat
Ligne = Trim(ReadString(#fichier0)) ; On lit la ligne du texte
If Left(Ligne, 1) <> ";" ; Si la ligne n'est pas une ligne de commentaire
; On regarde le premier mot de la ligne
MotComplet.s = StringField(Ligne, 1, " ")
Mot.s = StringField(MotComplet, 1, "(")
Mot = LCase (StringField(Mot, 1, "."))
Debug "'" + Mot + "' > 1er mot : Tab -"
For n = 0 To Nb_Mot_G
If Mot = Mot_G(n)
NbEspace = NbEspace + Tab_G(n)
Debug "Tabulation " + Str(Tab_G(n))
EndIf
Next
EndIf
;{- Enregistremement de la ligne
If NbEspace <= 0 ; en cas de problème avec la mise en forme, par exemple un endif sans if
Espace$ = ""
ElseIf Tab_Reelle
Espace$ = RSet("", NbEspace, Chr(9))
Else
Espace$ = Space(NbEspace * Tab)
EndIf
If Eof(#fichier0)
WriteString(#fichier1, Ligne)
Else
WriteStringN(#fichier1, Espace$ + Ligne)
EndIf
;}
If Left(Ligne, 1) <> ";"
Index = 0
Repeat
Index = Index + 1
MotComplet = StringField(Ligne, Index, " ")
Mot = StringField(MotComplet, 1, "(")
Mot = LCase (StringField(Mot, 1, "."))
Debug "'" + Mot + "' > Mot : Tab +"
If Texte(Ligne, Index) = 0
For n = 0 To Nb_Mot_D
If Mot = Mot_D(n)
NbEspace = NbEspace + Tab_D(n)
Debug "Tabulation " + Str(Tab_D(n))
EndIf
Next
EndIf
Until MotComplet = "" Or Mot = ";" Or Mot = ";-" Or Mot = ";{" Or Mot = ";}" Or Mot = ";{-" Or Mot = ";/" Or Mot = ";[" Or Mot = ";]"
Index = 1
Repeat
Index = Index + 1
MotComplet = StringField(Ligne, Index, " ")
Mot = StringField(MotComplet, 1, "(")
Mot = LCase (StringField(Mot, 1, "."))
Debug "'" + Mot + "' > Mot suivant : Tab -"
If Texte(Ligne, Index) = 0
For n = 0 To Nb_Mot_G
If Mot = Mot_G(n)
NbEspace = NbEspace + Tab_G(n)
Debug "Tabulation " + Str(Tab_G(n))
EndIf
Next
EndIf
Until MotComplet = "" Or Mot = ";" Or Mot = ";-" Or Mot = ";{" Or Mot = ";}" Or Mot = ";{-" Or Mot = ";/" Or Mot = ";[" Or Mot = ";]"
EndIf
SetGadgetState(#Progression, Round(100 * Loc(#fichier0) / Taille, 1))
Until Eof(#fichier0)
CloseFile(#fichier0)
CloseFile(#fichier1)
DeleteFile(Fichier + ".pbsyntax")
SetGadgetText(#Progression_Texte, Txt(29))
Else
MessageRequester(Txt(30), Txt(31) + Fichier, 0)
EndIf
EndIf
Else
MessageRequester(Txt(30), Txt(31) + Fichier, 0)
EndIf
EndIf
EndProcedure
Procedure FichiersRecents(Fichier.s)
If LCase (GetExtensionPart(Fichier)) = "pb"
For i = 1 To 3
For ii = 1 To 2
recent(5 - i, ii) = recent(4 - i, ii)
Next
Next
recent(1, 1) = GetFilePart(Fichier)
recent(1, 2) = Fichier
FreeMenu(#Menu_bar_0)
If CreateMenu(#Menu_bar_0, WindowID(#Window_principale))
MenuTitle(Txt(14))
MenuItem(#Ouvrir, Txt(15))
MenuItem(#Ouvrir_dossier, Txt(17))
MenuBar()
OpenSubMenu(Txt(16))
MenuItem(#Recent1, "1 " + recent(1, 1))
MenuItem(#Recent2, "2 " + recent(2, 1))
MenuItem(#Recent3, "3 " + recent(3, 1))
MenuItem(#Recent4, "4 " + recent(4, 1))
CloseSubMenu()
MenuTitle("?")
MenuItem(#Concepteur, Txt(18))
MenuBar()
MenuItem(#MENU_Langue, "Select language...")
EndIf
EndIf
EndProcedure
Procedure Traitement_Dossier(Dossier.s, n.l)
If Right(Dossier, 1) <> "\"
Dossier = Dossier + "\"
EndIf
If ExamineDirectory(n, Dossier, "*.*")
Repeat
FileType = NextDirectoryEntry(n)
If FileType = 1
Nom.s = DirectoryEntryName(n)
If LCase (GetExtensionPart(Nom)) = "pb"
Analyse(Dossier + Nom)
EndIf
ElseIf FileType = 2
Nom.s = DirectoryEntryName(n)
If Nom <> "." And Nom <> ".."
Traitement_Dossier(Dossier + Nom, n + 1)
EndIf
EndIf
Until FileType = 0
EndIf
EndProcedure
Procedure Traitement(choix)
Select choix
Case 0
Fichier.s = OpenFileRequester(Txt(26) + "Purebasic *.pb", adresse$, Txt(26) + "Purebasic|*.pb;*.pbi;*.pbfl", 0, #PB_Requester_MultiSelection)
Repeat
If Fichier <> ""
FichiersRecents(Fichier)
Analyse(Fichier)
EndIf
Fichier = NextSelectedFileName()
Until Fichier = ""
Case -1
Fichier = txt$
FichiersRecents(Fichier)
Analyse(Fichier)
Case -2
dropped.l = EventwParam()
num.l = DragQueryFile_(dropped, -1, "", 0)
For Index = 0 To num - 1
Size.l = DragQueryFile_(dropped, Index, 0, 0)
Fichier.s = Space(Size)
DragQueryFile_(dropped, Index, Fichier, Size + 1)
If FileSize(Fichier) >= 0
FichiersRecents(Fichier)
Analyse(Fichier)
ElseIf FileSize(Fichier) = -2
Traitement_Dossier(Fichier, 1)
EndIf
Next
DragFinish_(dropped)
Case -3
Fichier.s = PathRequester(Txt(9), adresse$)
If Fichier <> ""
Traitement_Dossier(Fichier, 1)
EndIf
Default
Fichier.s = recent(choix, 2)
nom$ = recent(choix, 1)
Analyse(Fichier)
EndSelect
EndProcedure
Procedure Charge_Langue()
If FileSize("PBSyntax\" + language + "\Language.ini") < 0
language = "English"
EndIf
If OpenPreferences("PBSyntax\" + language + "\Language.ini")
For n = 0 To #NbTxt
Txt(n) = ReadPreferenceString("Txt " + Str(n), "")
Next
EndIf
EndProcedure
Procedure Charger()
OpenPreferences("PBSyntax\PBSyntax.inf")
PreferenceGroup("Général")
adresse$ = ReadPreferenceString("Dossier de démarrage", "c:\program files\purebasic\")
Tab = ReadPreferenceLong("Tabulation", 2)
Tab_Reelle = ReadPreferenceLong("Tabulation réelle", 0)
language = ReadPreferenceString("Langue", "English")
PreferenceGroup("Options")
PbTab = ReadPreferenceLong("Lecture de la tabulation de PB", 1)
PbLanguage = ReadPreferenceLong("Lecture de la langue de PB", 1)
PbPref = ReadPreferenceString("Adresse de PureBasics.prefs", GetSpecialFolderLocation(#CSIDL_APPDATA) + "PureBasic\PureBasic.prefs")
FichierBak = ReadPreferenceLong("Création d'un Bak", 1)
PreferenceGroup("Documents récents")
For i = 1 To 4
recent(i, 1) = ReadPreferenceString("Nom du fichier " + Str(i), "")
recent(i, 2) = ReadPreferenceString("Adresse du fichier " + Str(i), "")
Next
ClosePreferences()
OpenPreferences(PbPref)
PreferenceGroup("Global")
If PbTab
Tab = ReadPreferenceLong("TabLength", 2)
Tab_Reelle = ReadPreferenceLong("RealTab", 0)
EndIf
If PbLanguage
language = ReadPreferenceString("CurrentLanguage", "English")
EndIf
ClosePreferences()
Charge_Langue()
If FileSize(PbPref) = -1
PbPref = GetSpecialFolderLocation(#CSIDL_APPDATA) + "PureBasic\PureBasic.prefs"
EndIf
If FileSize(PbPref) = -1
Repeat
MessageRequester("PBSyntax", Txt(32), 16)
PbPref = OpenFileRequester("PBSyntax", "c:\", "PureBasic.prefs|PureBasic.prefs", 1)
If PbPref = ""
End
EndIf
Until FileSize(PbPref) > 0
EndIf
; chargement des mots clé
If OpenFile(0, "PBSyntax\Liste +.txt")
Nb_Mot_D = -1
Repeat
Nb_Mot_D + 1
Texte.s = ReadString(0)
Mot_D(Nb_Mot_D) = StringField(Texte, 1, Chr(9))
Tab_D(Nb_Mot_D) = Val(StringField(Texte, 2, Chr(9)))
; Debug Mot_D(Nb_Mot_D) + " = " + Str(Tab_D(Nb_Mot_D))
Until Eof(0)
CloseFile(0)
EndIf
If OpenFile(0, "PBSyntax\Liste -.txt")
Nb_Mot_G = -1
Repeat
Nb_Mot_G + 1
Texte.s = ReadString(0)
Mot_G(Nb_Mot_G) = StringField(Texte, 1, Chr(9))
Tab_G(Nb_Mot_G) = Val(StringField(Texte, 2, Chr(9)))
; Debug Mot_G(Nb_Mot_G) + " = " + Str(Tab_G(Nb_Mot_G))
Until Eof(0)
CloseFile(0)
EndIf
EndProcedure
Procedure Sauver()
If CreatePreferences("PBSyntax\PBSyntax.inf")
PreferenceComment(" PBSyntax")
PreferenceComment(" Version 4.0")
PreferenceComment(" Développeur : LSI (BOUGUIN Régis)")
PreferenceComment("")
PreferenceGroup("Général")
WritePreferenceString("Dossier de démarrage", adresse$)
WritePreferenceLong("Tabulation", Tab)
WritePreferenceLong("Tabulation réelle", Tab_Reelle)
WritePreferenceString("Langue", language)
PreferenceComment("")
PreferenceGroup("Options")
WritePreferenceLong("Lecture de la tabulation de PB", PbTab)
WritePreferenceLong("Lecture de la langue de PB", PbLanguage)
WritePreferenceString("Adresse de PureBasics.prefs", PbPref)
WritePreferenceLong("Création d'un Bak", FichierBak)
PreferenceComment("")
PreferenceGroup("Documents récents")
For i = 1 To 4
WritePreferenceString("Nom du fichier " + Str(i), recent(i, 1))
WritePreferenceString("Adresse du fichier " + Str(i), recent(i, 2))
Next
ClosePreferences()
EndIf
EndProcedure
;- Debut du programme
Debut:
Charger()
Open_Window()
txt$ = ProgramParameter()
If txt$ <> ""
Repeat
txt2$ = ProgramParameter()
If txt2$ <> ""
txt$ = txt$ + " " + txt2$
EndIf
Until txt2$ = ""
Traitement(-1)
Sauver()
End
EndIf
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Menu
Select EventMenu()
Case #Ouvrir
Traitement(0)
Case #Ouvrir_dossier
Traitement(-3)
Case #Recent1
Traitement(1)
Case #Recent2
Traitement(2)
Case #Recent3
Traitement(3)
Case #Recent4
Traitement(4)
Case #Concepteur
MessageRequester("Concepteur", "Le Soldat Inconnu" + Chr(10) + "Forum français PureBasic", 0)
Case #MENU_Langue
Goto choix_langue
EndSelect
EndIf
If Event = #PB_Event_Gadget
Select EventGadget()
Case #Panel
Onglet = GetGadgetState(#Panel)
Case #Gadget_2
Traitement(0)
Case #DossierDemarrage_Choisir
txt$ = PathRequester(Txt(33), adresse$)
If txt$ <> ""
adresse$ = txt$
SetGadgetText(#DossierDemarrage, adresse$)
EndIf
Case #DossierDemarrage
adresse$ = GetGadgetText(#DossierDemarrage)
Case #Pref_Tab
Tab = GetGadgetState(#Pref_Tab)
If GetGadgetText(#Pref_Tab) <> Str(Tab)
SetGadgetText(#Pref_Tab, Str(Tab))
EndIf
Case #PrefPB_Langue
PbLanguage = GetGadgetState(#PrefPB_Langue)
ActiveOption()
If PbLanguage = 0
Goto choix_langue
Else
Sauver()
CloseWindow(#Window_principale)
Goto debut
EndIf
Case #PrefPB_Tab
PbTab = GetGadgetState(#PrefPB_Tab)
If PbTab = 0
ActiveOption()
Else
Sauver()
CloseWindow(#Window_principale)
Goto debut
EndIf
Case #Pref_Tab_VraiTabulation
Tab_Reelle = GetGadgetState(#Pref_Tab_VraiTabulation)
Case #Fichier_BAK
FichierBak = GetGadgetState(#Fichier_BAK)
EndSelect
EndIf
If Event = #WM_DROPFILES
Traitement(-2)
EndIf
Until Event = #PB_Event_CloseWindow
Sauver()
End
choix_langue:
Sauver()
CloseWindow(#Window_principale)
If OpenWindow(#Window_langue, 0, 0, 300, 30, "Select your language", #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#Window_langue))
ComboBoxGadget(#Langue, 5, 5, 290, 20)
EndIf
liste_langue(0) = "Deutsch"
liste_langue(1) = "Dutch"
liste_langue(2) = "English"
liste_langue(3) = "Francais"
liste_langue(4) = "Italian"
liste_langue(5) = "Portuguese"
liste_langue(6) = "Spanish"
pos = -1
For n = 0 To 6
If FileSize("PBSyntax\" + liste_langue(n) + "\Language.ini") >= 0
pos = pos + 1
liste_langue(pos) = liste_langue(n)
AddGadgetItem(#Langue, -1, liste_langue(n))
EndIf
Next
language = ""
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Select EventGadget() ; boutons, zone de texte, ...
Case #Langue
pos = GetGadgetState(#Langue)
; Debug pos
If pos >= 0
language = liste_langue(pos)
; Debug language
EndIf
EndSelect
EndIf
Until language <> ""
CloseWindow(#Window_langue)
Sauver()
EndIf
Goto debut