trie des fichiers dans un ordre plus intéressant

This commit is contained in:
2025-08-15 14:33:21 +02:00
parent 1d49981e66
commit 487e1fce18

View File

@@ -190,6 +190,7 @@ Declare.i LoadLocalExcludes(repoDir$, List excl.s())
Declare.i IsPermanentlyExcluded(file$, List excl.s()) Declare.i IsPermanentlyExcluded(file$, List excl.s())
Declare.i AddPermanentExclude(repoDir$, file$) Declare.i AddPermanentExclude(repoDir$, file$)
Declare.i RemovePermanentExclude(repoDir$, file$) Declare.i RemovePermanentExclude(repoDir$, file$)
Declare.i SortRowsByInterest(List rows.FileRow())
; ====== Utils ====== ; ====== Utils ======
@@ -1443,6 +1444,8 @@ EndProcedure
; - lit le nom depuis le gadget ET depuis rows() ; - lit le nom depuis le gadget ET depuis rows()
; - corrige le cas où la 1re lettre saute (ex: "PBIDE..." → "BIDE...") ; - corrige le cas où la 1re lettre saute (ex: "PBIDE..." → "BIDE...")
; - normalise le chemin (GitPath), suit les renommages (--follow) + fallback --all ; - normalise le chemin (GitPath), suit les renommages (--follow) + fallback --all
; Fenêtre de sélection de commit puis restauration dun fichier
; ➜ Affiche maintenant date + heure (format ISO, avec fuseau)
Procedure.i OpenRestoreFileWindow(repoDir$, List rows.FileRow()) Procedure.i OpenRestoreFileWindow(repoDir$, List rows.FileRow())
Protected idx.i = GetGadgetState(#GListStatus) Protected idx.i = GetGadgetState(#GListStatus)
If idx < 0 If idx < 0
@@ -1450,42 +1453,21 @@ Procedure.i OpenRestoreFileWindow(repoDir$, List rows.FileRow())
ProcedureReturn 0 ProcedureReturn 0
EndIf EndIf
; 1) Deux sources : gadget (colonne 2) et liste interne rows() ; Récupérer le nom de fichier depuis la liste (colonne 1 = chemin)
Protected fromGadget$ = GetGadgetItemText(#GListStatus, idx, 1) Protected target$ = GetGadgetItemText(#GListStatus, idx, 1)
Protected fromRows$ = FileFromRowsByIndex(idx, rows())
; 2) Choisir la version la plus fiable
Protected target$ = fromGadget$
If fromRows$ <> ""
; Si la version rows() est plus longue OU si fromRows$ commence par un caractère
; qui, en retirant le 1er, donne exactement fromGadget$, on privilégie rows().
If Len(fromRows$) > Len(fromGadget$)
target$ = fromRows$
ElseIf Len(fromRows$) > 1 And Mid(fromRows$, 2) = fromGadget$
target$ = fromRows$
EndIf
EndIf
; Dernier filet de sécurité
If target$ = "" : target$ = fromRows$ : EndIf
If target$ = "" : target$ = fromGadget$ : EndIf
If #EnableDebug
Debug "[Restore select] gadget='" + fromGadget$ + "' rows='" + fromRows$ + "' chosen='" + target$ + "'"
EndIf
If target$ = "" If target$ = ""
MessageRequester("Restaurer", "Aucun fichier sélectionné.", #PB_MessageRequester_Info) MessageRequester("Restaurer", "Aucun fichier sélectionné.", #PB_MessageRequester_Info)
ProcedureReturn 0 ProcedureReturn 0
EndIf EndIf
; Normaliser le chemin pour Git (slashs, ./) ; Normaliser pour Git (slashs, ./)
Protected fileArg$ = GitPath(target$) Protected fileArg$ = GitPath(target$)
Protected gc.GitCall, out$, line$, n.i, i.i, q$ = Chr(34) Protected gc.GitCall, out$, line$, n.i, i.i, q$ = Chr(34)
; 3) Historique avec suivi des renommages ; 1) Historique avec heure (—date=iso affiche YYYY-MM-DD HH:MM:SS +ZZZZ)
; Note: si tu préfères lheure locale stricte (Git récent), tu peux essayer --date=iso-strict-local
gc\workdir = repoDir$ gc\workdir = repoDir$
gc\args = "log --follow --date=short --pretty=format:%h%x09%ad%x09%s -n 200 -- " + q$ + fileArg$ + q$ gc\args = "log --follow --date=iso --pretty=format:%h%x09%ad%x09%s -n 200 -- " + q$ + fileArg$ + q$
If #EnableDebug : Debug "[Restore log] " + gc\args : EndIf If #EnableDebug : Debug "[Restore log] " + gc\args : EndIf
If RunGit(@gc) <> 0 If RunGit(@gc) <> 0
MessageRequester("Restaurer", "Échec du log : " + #LF$ + TrimNewlines(gc\errors), #PB_MessageRequester_Error) MessageRequester("Restaurer", "Échec du log : " + #LF$ + TrimNewlines(gc\errors), #PB_MessageRequester_Error)
@@ -1493,9 +1475,9 @@ Procedure.i OpenRestoreFileWindow(repoDir$, List rows.FileRow())
EndIf EndIf
out$ = gc\output out$ = gc\output
; 4) Fallback : toutes les refs (utile si lhistorique du fichier est sur une autre branche) ; 2) Fallback : toutes les refs (utile si lhistorique est sur une autre branche)
If Trim(out$) = "" If Trim(out$) = ""
gc\args = "log --all --follow --date=short --pretty=format:%h%x09%ad%x09%s -n 200 -- " + q$ + fileArg$ + q$ gc\args = "log --all --follow --date=iso --pretty=format:%h%x09%ad%x09%s -n 200 -- " + q$ + fileArg$ + q$
If #EnableDebug : Debug "[Restore log fallback --all] " + gc\args : EndIf If #EnableDebug : Debug "[Restore log fallback --all] " + gc\args : EndIf
If RunGit(@gc) = 0 If RunGit(@gc) = 0
out$ = gc\output out$ = gc\output
@@ -1509,25 +1491,26 @@ Procedure.i OpenRestoreFileWindow(repoDir$, List rows.FileRow())
ProcedureReturn 0 ProcedureReturn 0
EndIf EndIf
; Liste des commits → UI ; 3) UI : liste des commits avec Date/Heure
NewList hashes.s() NewList hashes.s()
If OpenWindow(#WRestore, 0, 0, 760, 420, "Restaurer : " + target$, #PB_Window_SystemMenu | #PB_Window_ScreenCentered) If OpenWindow(#WRestore, 0, 0, 780, 440, "Restaurer : " + target$, #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(#GRestInfo, 10, 10, 740, 22, "Choisissez le commit vers lequel restaurer le fichier.") TextGadget(#GRestInfo, 10, 10, 760, 22, "Choisissez le commit vers lequel restaurer le fichier.")
ListIconGadget(#GRestList, 10, 40, 740, 330, "Commit", 100, #PB_ListIcon_FullRowSelect) ListIconGadget(#GRestList, 10, 40, 760, 340, "Commit", 110, #PB_ListIcon_FullRowSelect)
AddGadgetColumn(#GRestList, 1, "Date", 90) AddGadgetColumn(#GRestList, 1, "Date / Heure", 190) ; élargi pour lheure et le fuseau
AddGadgetColumn(#GRestList, 2, "Message", 520) AddGadgetColumn(#GRestList, 2, "Message", 440)
ButtonGadget(#GRestOK, 540, 380, 100, 28, "Restaurer") ButtonGadget(#GRestOK, 550, 390, 100, 28, "Restaurer")
ButtonGadget(#GRestCancel, 650, 380, 100, 28, "Annuler") ButtonGadget(#GRestCancel, 660, 390, 100, 28, "Annuler")
n = CountString(out$, #LF$) + 1 n = CountString(out$, #LF$) + 1
For i = 1 To n For i = 1 To n
line$ = StringField(out$, i, #LF$) line$ = StringField(out$, i, #LF$)
If Trim(line$) <> "" If Trim(line$) <> ""
Protected h$ = StringField(line$, 1, #TAB$) Protected h$ = StringField(line$, 1, #TAB$) ; hash abrégé
Protected d$ = StringField(line$, 2, #TAB$) Protected d$ = StringField(line$, 2, #TAB$) ; date + heure (+ZZZZ)
Protected s$ = StringField(line$, 3, #TAB$) Protected s$ = StringField(line$, 3, #TAB$) ; message
AddGadgetItem(#GRestList, -1, h$ + #LF$ + d$ + #LF$ + s$) AddGadgetItem(#GRestList, -1, h$ + #LF$ + d$ + #LF$ + s$)
AddElement(hashes()) : hashes() = h$ AddElement(hashes()) : hashes() = h$
If #EnableDebug : Debug "[Restore list] " + h$ + " | " + d$ + " | " + s$ : EndIf
EndIf EndIf
Next Next
@@ -1540,6 +1523,7 @@ Procedure.i OpenRestoreFileWindow(repoDir$, List rows.FileRow())
If idx < 0 If idx < 0
MessageRequester("Restaurer", "Sélectionnez un commit.", #PB_MessageRequester_Warning) MessageRequester("Restaurer", "Sélectionnez un commit.", #PB_MessageRequester_Warning)
Else Else
; Récupérer le hash choisi
Protected k.i = 0, chosen$ Protected k.i = 0, chosen$
ForEach hashes() ForEach hashes()
If k = idx : chosen$ = hashes() : Break : EndIf If k = idx : chosen$ = hashes() : Break : EndIf
@@ -1773,31 +1757,120 @@ Procedure.s FileFromRowsByIndex(index.i, List rows.FileRow())
ProcedureReturn "" ProcedureReturn ""
EndProcedure EndProcedure
; Fenêtre de sélection de commit puis restauration dun fichier ; Trie la liste rows() par "intérêt" (cf. ordre ci-dessus) puis par chemin.
; Robuste : ; Utilise des seaux (buckets) puis recolle le tout. Pas de underscore, pas de IIf.
; - lit le nom depuis le gadget ET depuis rows() Procedure.i SortRowsByInterest(List rows.FileRow())
; - corrige le cas où la 1re lettre saute (ex: "PBIDE..." → "BIDE...") ; Catégorisation locale
; - normalise le chemin (GitPath), suit les renommages (--follow) + fallback --all Protected ProcedureReturnValue.i = 0
Protected cat.i
Protected x$, y$
; Seaux
NewList b0.FileRow() ; conflits (U)
NewList b1.FileRow() ; changements indexés (X)
NewList b2.FileRow() ; changements non indexés (Y)
NewList b3.FileRow() ; nouveaux (??)
NewList b4.FileRow() ; OK
NewList b5.FileRow() ; ignorés (!!)
NewList b6.FileRow() ; exclus permanents (EX)
NewList b7.FileRow() ; introuvables (NF)
; Helper: pousse un FileRow dans un seau
Macro PushTo(bucket)
AddElement(bucket())
bucket()\file = rows()\file
bucket()\stat = rows()\stat
bucket()\include = rows()\include
EndMacro
; 1) Répartition dans les seaux
ForEach rows()
cat = -1
x$ = Left(rows()\stat, 1)
y$ = Right(rows()\stat, 1)
If FindString(rows()\stat, "U", 1) > 0
cat = 0
ElseIf rows()\stat = "??"
cat = 3
ElseIf rows()\stat = "OK"
cat = 4
ElseIf rows()\stat = "!!"
cat = 5
ElseIf rows()\stat = "EX"
cat = 6
ElseIf rows()\stat = "NF"
cat = 7
Else
; autres codes porcelain XY
If x$ <> " "
cat = 1
ElseIf y$ <> " "
cat = 2
Else
; par sécurité, considère comme non indexé
cat = 2
EndIf
EndIf
Select cat
Case 0 : PushTo(b0)
Case 1 : PushTo(b1)
Case 2 : PushTo(b2)
Case 3 : PushTo(b3)
Case 4 : PushTo(b4)
Case 5 : PushTo(b5)
Case 6 : PushTo(b6)
Default: PushTo(b7)
EndSelect
Next
; 2) Tri alphabétique par chemin dans chaque seau
SortStructuredList(b0(), #PB_Sort_Ascending, OffsetOf(FileRow\file), #PB_String)
SortStructuredList(b1(), #PB_Sort_Ascending, OffsetOf(FileRow\file), #PB_String)
SortStructuredList(b2(), #PB_Sort_Ascending, OffsetOf(FileRow\file), #PB_String)
SortStructuredList(b3(), #PB_Sort_Ascending, OffsetOf(FileRow\file), #PB_String)
SortStructuredList(b4(), #PB_Sort_Ascending, OffsetOf(FileRow\file), #PB_String)
SortStructuredList(b5(), #PB_Sort_Ascending, OffsetOf(FileRow\file), #PB_String)
SortStructuredList(b6(), #PB_Sort_Ascending, OffsetOf(FileRow\file), #PB_String)
SortStructuredList(b7(), #PB_Sort_Ascending, OffsetOf(FileRow\file), #PB_String)
; 3) Recomposition de rows() dans l'ordre des seaux
ClearList(rows())
Macro AppendBucket(bucket2)
ForEach bucket2()
AddElement(rows())
rows()\file = bucket2()\file
rows()\stat = bucket2()\stat
rows()\include = bucket2()\include
ProcedureReturnValue + 1
Next
EndMacro
AppendBucket(b0)
AppendBucket(b1)
AppendBucket(b2)
AppendBucket(b3)
AppendBucket(b4)
AppendBucket(b5)
AppendBucket(b6)
AppendBucket(b7)
If #EnableDebug
Debug "[SortRows] total=" + Str(ProcedureReturnValue)
EndIf
ProcedureReturn ProcedureReturnValue
EndProcedure
; ------------------------------------------------------------------
; Ouvre l'interface principale (avec auto-save remote/branch par dépôt)
; ------------------------------------------------------------------
; ------------------------------------------------------------------
; Ouvre l'interface principale (boutons Inclure/Exclure retirés,
; bouton "Restaurer…" présent, auto-save remote/branch par dépôt)
; ------------------------------------------------------------------
; ------------------------------------------------------------------
; Ouvre l'interface principale (Push manuel, pas de bouton .gitignore,
; guide scrollable en lecture seule, options daffichage clarifiées)
; ------------------------------------------------------------------
; ------------------------------------------------------------------
; Ouvre l'interface principale (Push manuel, pas de bouton .gitignore,
; guide scrollable en lecture seule, options daffichage clarifiées)
; ------------------------------------------------------------------
; ------------------------------------------------------------------ ; ------------------------------------------------------------------
; Ouvre l'interface principale (Push manuel, guide scrollable, ; Ouvre l'interface principale (Push manuel, guide scrollable,
; prefs dépôt correctement rechargées & auto-sauvegardées) ; prefs dépôt correctement rechargées & auto-sauvegardées)
; ------------------------------------------------------------------ ; ------------------------------------------------------------------
; ------------------------------------------------------------------
; Ouvre l'interface principale (tri par intérêt avant affichage)
; ------------------------------------------------------------------
Procedure.i OpenGUI(initialDir$, prefsPath$) Procedure.i OpenGUI(initialDir$, prefsPath$)
Protected repoDir$ = DetectRepoRoot(initialDir$) Protected repoDir$ = DetectRepoRoot(initialDir$)
@@ -1806,13 +1879,13 @@ Procedure.i OpenGUI(initialDir$, prefsPath$)
Protected defBranch$ = "" Protected defBranch$ = ""
LoadPrefs(prefsPath$, defRemote$, defBranch$) LoadPrefs(prefsPath$, defRemote$, defBranch$)
; Prefs du dépôt (via structure pour bien remonter les valeurs) ; Prefs du dépôt (via structure)
Protected rp.RepoPrefs Protected rp.RepoPrefs
rp\remote = defRemote$ rp\remote = defRemote$
rp\branch = defBranch$ rp\branch = defBranch$
LoadRepoPrefs(repoDir$, @rp) LoadRepoPrefs(repoDir$, @rp)
; Sélection persistante pour RememberSel/RestoreSel ; Sélection persistante
Protected keepIdx.i Protected keepIdx.i
Protected keepFile$ Protected keepFile$
@@ -1888,12 +1961,13 @@ Procedure.i OpenGUI(initialDir$, prefsPath$)
Next Next
If rp\branch <> "" : SetGadgetText(#GComboBranch, rp\branch) : EndIf If rp\branch <> "" : SetGadgetText(#GComboBranch, rp\branch) : EndIf
; --- Fichiers : construction & affichage --- ; --- Fichiers : construction, tri, affichage ---
NewList rows.FileRow() NewList rows.FileRow()
BuildFullFileList(repoDir$, GetGadgetState(#GShowClean), GetGadgetState(#GShowIgnored), rows()) BuildFullFileList(repoDir$, GetGadgetState(#GShowClean), GetGadgetState(#GShowIgnored), rows())
If GetGadgetState(#GShowPermanent) = 0 If GetGadgetState(#GShowPermanent) = 0
ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next
EndIf EndIf
SortRowsByInterest(rows())
FillStatusList(rows()) FillStatusList(rows())
UpdateGuide(repoDir$, rows(), GetGadgetText(#GComboBranch), GetGadgetText(#GStringRemote)) UpdateGuide(repoDir$, rows(), GetGadgetText(#GComboBranch), GetGadgetText(#GStringRemote))
@@ -1913,9 +1987,6 @@ Procedure.i OpenGUI(initialDir$, prefsPath$)
SetGadgetText(#GStringRepo, repoDir$) SetGadgetText(#GStringRepo, repoDir$)
EnsureToolFilesExcluded(repoDir$) EnsureToolFilesExcluded(repoDir$)
; recharger prefs dépôt (rp repart des défauts globaux si rien)
rp\remote = GetGadgetText(#GStringRemote)
rp\branch = GetGadgetText(#GComboBranch)
rp\remote = defRemote$ rp\remote = defRemote$
rp\branch = defBranch$ rp\branch = defBranch$
LoadRepoPrefs(repoDir$, @rp) LoadRepoPrefs(repoDir$, @rp)
@@ -1933,6 +2004,7 @@ Procedure.i OpenGUI(initialDir$, prefsPath$)
If GetGadgetState(#GShowPermanent) = 0 If GetGadgetState(#GShowPermanent) = 0
ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next
EndIf EndIf
SortRowsByInterest(rows())
FillStatusList(rows()) FillStatusList(rows())
RestoreSel() RestoreSel()
UpdateGuide(repoDir$, rows(), GetGadgetText(#GComboBranch), GetGadgetText(#GStringRemote)) UpdateGuide(repoDir$, rows(), GetGadgetText(#GComboBranch), GetGadgetText(#GStringRemote))
@@ -1946,6 +2018,7 @@ Procedure.i OpenGUI(initialDir$, prefsPath$)
If GetGadgetState(#GShowPermanent) = 0 If GetGadgetState(#GShowPermanent) = 0
ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next
EndIf EndIf
SortRowsByInterest(rows())
FillStatusList(rows()) FillStatusList(rows())
RestoreSel() RestoreSel()
UpdateGuide(repoDir$, rows(), GetGadgetText(#GComboBranch), GetGadgetText(#GStringRemote)) UpdateGuide(repoDir$, rows(), GetGadgetText(#GComboBranch), GetGadgetText(#GStringRemote))
@@ -1959,6 +2032,7 @@ Procedure.i OpenGUI(initialDir$, prefsPath$)
If GetGadgetState(#GShowPermanent) = 0 If GetGadgetState(#GShowPermanent) = 0
ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next
EndIf EndIf
SortRowsByInterest(rows())
FillStatusList(rows()) FillStatusList(rows())
RestoreSel() RestoreSel()
UpdateGuide(repoDir$, rows(), GetGadgetText(#GComboBranch), GetGadgetText(#GStringRemote)) UpdateGuide(repoDir$, rows(), GetGadgetText(#GComboBranch), GetGadgetText(#GStringRemote))
@@ -1976,6 +2050,7 @@ Procedure.i OpenGUI(initialDir$, prefsPath$)
If GetGadgetState(#GShowPermanent) = 0 If GetGadgetState(#GShowPermanent) = 0
ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next
EndIf EndIf
SortRowsByInterest(rows())
FillStatusList(rows()) FillStatusList(rows())
RestoreSel() RestoreSel()
EndIf EndIf
@@ -1994,6 +2069,7 @@ Procedure.i OpenGUI(initialDir$, prefsPath$)
If GetGadgetState(#GShowPermanent) = 0 If GetGadgetState(#GShowPermanent) = 0
ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next
EndIf EndIf
SortRowsByInterest(rows())
FillStatusList(rows()) FillStatusList(rows())
RestoreSel() RestoreSel()
EndIf EndIf
@@ -2012,6 +2088,7 @@ Procedure.i OpenGUI(initialDir$, prefsPath$)
If GetGadgetState(#GShowPermanent) = 0 If GetGadgetState(#GShowPermanent) = 0
ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next
EndIf EndIf
SortRowsByInterest(rows())
FillStatusList(rows()) FillStatusList(rows())
RestoreSel() RestoreSel()
UpdateGuide(repoDir$, rows(), GetGadgetText(#GComboBranch), GetGadgetText(#GStringRemote)) UpdateGuide(repoDir$, rows(), GetGadgetText(#GComboBranch), GetGadgetText(#GStringRemote))
@@ -2035,7 +2112,6 @@ Procedure.i OpenGUI(initialDir$, prefsPath$)
If FindString(name$, "/", 1) = 0 If FindString(name$, "/", 1) = 0
SetGadgetText(#GComboBranch, name$) SetGadgetText(#GComboBranch, name$)
EndIf EndIf
; auto-save dépôt après création/suivi
SaveRepoPrefs(repoDir$, GetGadgetText(#GStringRemote), GetGadgetText(#GComboBranch)) SaveRepoPrefs(repoDir$, GetGadgetText(#GStringRemote), GetGadgetText(#GComboBranch))
EndIf EndIf
EndIf EndIf
@@ -2084,6 +2160,7 @@ Procedure.i OpenGUI(initialDir$, prefsPath$)
If GetGadgetState(#GShowPermanent) = 0 If GetGadgetState(#GShowPermanent) = 0
ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next ForEach rows() : If rows()\stat = "EX" : DeleteElement(rows()) : EndIf : Next
EndIf EndIf
SortRowsByInterest(rows())
FillStatusList(rows()) FillStatusList(rows())
RestoreSel() RestoreSel()
UpdateGuide(repoDir$, rows(), GetGadgetText(#GComboBranch), GetGadgetText(#GStringRemote)) UpdateGuide(repoDir$, rows(), GetGadgetText(#GComboBranch), GetGadgetText(#GStringRemote))
@@ -2101,14 +2178,14 @@ Procedure.i OpenGUI(initialDir$, prefsPath$)
If idx2 >= 0 If idx2 >= 0
RememberSel() RememberSel()
ToggleIncludeAt(idx2, rows()) ToggleIncludeAt(idx2, rows())
FillStatusList(rows()) SortRowsByInterest(rows())
FillStatusList(rows()) ; garde la sélection par la suite
RestoreSel() RestoreSel()
EndIf EndIf
EndSelect EndSelect
Case #PB_Event_CloseWindow Case #PB_Event_CloseWindow
; Dernière sauvegarde des prefs dépôt à la fermeture
SaveRepoPrefs(repoDir$, GetGadgetText(#GStringRemote), GetGadgetText(#GComboBranch)) SaveRepoPrefs(repoDir$, GetGadgetText(#GStringRemote), GetGadgetText(#GComboBranch))
EndSelect EndSelect
@@ -2319,9 +2396,9 @@ Else
EndIf EndIf
; IDE Options = PureBasic 6.21 (Windows - x64) ; IDE Options = PureBasic 6.21 (Windows - x64)
; CursorPosition = 2121 ; CursorPosition = 1835
; FirstLine = 2083 ; FirstLine = 1824
; Folding = ---------- ; Folding = -----------
; EnableXP ; EnableXP
; DPIAware ; DPIAware
; Executable = ..\PBIDE-GitTool.exe ; Executable = ..\PBIDE-GitTool.exe