Add Local and Remote Branch

This commit is contained in:
2025-08-29 17:08:18 +02:00
parent 7af2af85d6
commit d66e2a88a6

107
main2.pb
View File

@@ -593,7 +593,7 @@ EndProcedure
; -----------------------------------------------------------------------------
; Tooltips & i18n
; FR: Appeler après la création des gadgets, puis après tout changement de langue.
; FR: Appeler après la création des gadgets, puis après tout changement de langue
; EN: Call after creating gadgets, then after any language change.
; -----------------------------------------------------------------------------
@@ -1033,6 +1033,102 @@ Procedure GetGitRemoteUrl(name.s="origin")
EndIf
EndProcedure
Procedure GetGitLocalBranch()
If Git("branch")=0
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure.s RefreshLocalBranchesList(Gdt.i)
ClearGadgetItems(Gdt)
; Parser ligne par ligne
Protected n.l = CountString(main\Gitcall\output, #LF$) + 1
Protected i.l, line.s
For i = 1 To n
line = StringField(main\Gitcall\output, i, #LF$)
line = Trim(line)
If Len(line) = 0
Continue ; Ignorer les lignes vides
EndIf
Protected selectbranch.b=#False
If Left(line,1)="*"
selectbranch=#True
line=Trim(StringField(line,2," "))
EndIf
AddGadgetItem(Gdt,i-1,line)
If selectbranch=#True
SetGadgetState(Gdt,i-1)
EndIf
Next
EndProcedure
Procedure GetGitRemoteBranch()
If Git("branch -r")=0
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure.s RefreshRemoteBranchesList(Gdt.i)
ClearGadgetItems(Gdt)
; Parser ligne par ligne
Protected n.l = CountString(main\Gitcall\output, #LF$) + 1
Protected i.l, line.s, cleanBranchName.s, defaultBranch.s
Protected itemIndex.l
; Trouver d'abord la branche par défaut
For i = 1 To n
line = StringField(main\Gitcall\output, i, #LF$)
line = Trim(line)
If FindString(line, "->", 1)
; Extraire la branche par défaut depuis "origin/HEAD -> origin/main"
defaultBranch = Trim(StringField(line, 2, "->"))
If Left(defaultBranch, 8) = "remotes/"
defaultBranch = Right(defaultBranch, Len(defaultBranch) - 8)
EndIf
Break
EndIf
Next
; Ajouter les branches
For i = 1 To n
line = StringField(main\Gitcall\output, i, #LF$)
line = Trim(line)
If Len(line) = 0
Continue ; Ignorer les lignes vides
EndIf
; Ignorer la ligne origin/HEAD -> origin/main
If FindString(line, "->", 1)
Continue
EndIf
; Nettoyer le nom de la branche (enlever "remotes/" si présent)
cleanBranchName = line
If Left(cleanBranchName, 8) = "remotes/"
cleanBranchName = Right(cleanBranchName, Len(cleanBranchName) - 8)
EndIf
itemIndex = CountGadgetItems(Gdt)
AddGadgetItem(Gdt, itemIndex, cleanBranchName)
; Sélectionner la branche par défaut
If cleanBranchName = defaultBranch
SetGadgetState(Gdt, itemIndex)
EndIf
Next
EndProcedure
; --- Helper interne : scanne un dossier et alimente la liste
Procedure _ScanFiles(path$, root$="")
If root$="":root$=path$:EndIf
@@ -1085,14 +1181,19 @@ Procedure RefreshFiles()
ClearList(main\Files())
readDirectory()
If main\IsRepository And GetGitVersion()
GetGitLocalBranch()
RefreshLocalBranchesList(#GID_CbLocalBranch)
GetGitStatusPocelaine()
ParseStatusPorcelaine(main\gitCall\output)
If GetGitRemoteUrl()
SetGadgetText(#GID_EdRemote,SupTrim(main\gitCall\output))
main\hasRemoteUrl=#True
GetGitRemoteBranch()
RefreshRemoteBranchesList(#GID_CbRemoteBranch)
Else
SetGadgetText(#GID_EdRemote,"")
main\hasRemoteUrl=#False
ClearGadgetItems(#GID_CbRemoteBranch)
EndIf
EndIf
Protected n.l=n-1
@@ -1243,8 +1344,8 @@ EndProcedure
Main()
; IDE Options = PureBasic 6.21 (Windows - x64)
; CursorPosition = 591
; FirstLine = 521
; CursorPosition = 1191
; FirstLine = 1159
; Folding = ------
; EnableXP
; DPIAware