Add 2 branchs selectors

This commit is contained in:
2025-08-29 13:26:34 +02:00
parent 9d98f76bed
commit 7af2af85d6

192
main2.pb
View File

@@ -399,14 +399,19 @@ Enumeration GadgetsIDs
#GID_BtnBrowseRepo #GID_BtnBrowseRepo
#GID_BtnInit #GID_BtnInit
#GID_BtnRefresh #GID_BtnRefresh
; --- NEW: Local branches ---
#GID_LblLocalBranch
#GID_CbLocalBranch
#GID_BtnNewLocalBranch
; Remote frame ; Remote frame
#GID_FrmRemote #GID_FrmRemote
#GID_LblRemote #GID_LblRemote
#GID_EdRemote #GID_EdRemote
#GID_LblBranch ; --- NEW: Remote branches ---
#GID_CbBranch #GID_LblRemoteBranch
#GID_BtnNewBranch #GID_CbRemoteBranch
#GID_BtnNewRemoteBranch
#GID_BtnClone #GID_BtnClone
#GID_BtnPull #GID_BtnPull
#GID_BtnPush #GID_BtnPush
@@ -451,7 +456,7 @@ Enumeration GadgetsIDs
#GID_CbScope #GID_CbScope
#GID_BtnSaveCfg #GID_BtnSaveCfg
; --- App settings (langue) --- ; --- App settings (langue) ---
#GID_FrmApp #GID_FrmApp
#GID_LblAppLang #GID_LblAppLang
#GID_CbAppLang #GID_CbAppLang
@@ -482,6 +487,7 @@ Enumeration GadgetsIDs
#GID_BtnApplyProxy #GID_BtnApplyProxy
EndEnumeration EndEnumeration
; ----------------------------------------------------------------------------- ; -----------------------------------------------------------------------------
; SMALL HELPERS / AIDES UTILITAIRES ; SMALL HELPERS / AIDES UTILITAIRES
; ----------------------------------------------------------------------------- ; -----------------------------------------------------------------------------
@@ -498,7 +504,7 @@ Procedure ResizeGUI()
If winW < #UI_WinMinW : winW = #UI_WinMinW : EndIf If winW < #UI_WinMinW : winW = #UI_WinMinW : EndIf
If winH < #UI_WinMinH : winH = #UI_WinMinH : EndIf If winH < #UI_WinMinH : winH = #UI_WinMinH : EndIf
; Left panel width adapts, but keeps at least minimum ; Largeur du panel gauche (avec min/max)
Protected panelW = #UI_PanelStartW Protected panelW = #UI_PanelStartW
panelW = Min(panelW, winW - #UI_HelpMinW - #UI_Margin*4) panelW = Min(panelW, winW - #UI_HelpMinW - #UI_Margin*4)
panelW = Max(panelW, #UI_PanelMinW) panelW = Max(panelW, #UI_PanelMinW)
@@ -506,59 +512,85 @@ Procedure ResizeGUI()
Protected panelH = winH - #UI_Margin*2 Protected panelH = winH - #UI_Margin*2
ResizeGadget(#GID_Panel, #UI_Margin, #UI_Margin, panelW, panelH) ResizeGadget(#GID_Panel, #UI_Margin, #UI_Margin, panelW, panelH)
; Help / Aide area on the right fills the remaining space ; Zone daide à droite
Protected helpX = #UI_Margin*2 + panelW Protected helpX = #UI_Margin*2 + panelW
Protected helpW = winW - helpX - #UI_Margin Protected helpW = winW - helpX - #UI_Margin
Protected helpH = panelH Protected helpH = panelH
ResizeGadget(#GID_HelpFrame, helpX, #UI_Margin, helpW, helpH) ResizeGadget(#GID_HelpFrame, helpX, #UI_Margin, helpW, helpH)
; WebView inside frame (with padding and header)
Protected innerX = helpX + #UI_Inset Protected innerX = helpX + #UI_Inset
Protected innerY = #UI_Margin + #UI_FrameHeaderH Protected innerY = #UI_Margin + #UI_FrameHeaderH
Protected innerW = helpW - #UI_Inset*2 Protected innerW = helpW - #UI_Inset*2
Protected innerH = helpH - #UI_Inset - #UI_FrameHeaderH Protected innerH = helpH - #UI_Inset - #UI_FrameHeaderH
ResizeGadget(#GID_HelpWeb, innerX, innerY, innerW, innerH) ResizeGadget(#GID_HelpWeb, innerX, innerY, innerW, innerH)
; --- Resize essentials inside tabs (keep it simple & robust) --- ; === Onglet 1 : Local + Remote + Files ===
; TAB 1: Files list should expand with panel height ; Étire les frames Local/Remote à la nouvelle largeur et recalcule l'empilement
Protected hLocal = GadgetHeight(#GID_FrmLocal)
Protected hRemote = GadgetHeight(#GID_FrmRemote)
ResizeGadget(#GID_FrmLocal, #UI_Inset, #UI_Inset, panelW - #UI_Inset*2, hLocal)
Protected yRemote = BottomOf(#GID_FrmLocal) + #UI_Inset
ResizeGadget(#GID_FrmRemote, #UI_Inset, yRemote, panelW - #UI_Inset*2, hRemote)
; --- Ajuste les contrôles internes dépendants de la largeur ---
; LOCAL: Combo branche + bouton
Protected yLocalBranch = GadgetY(#GID_CbLocalBranch)
Protected cbLocalW = GadgetWidth(#GID_FrmLocal) - #UI_Inset*4 - GadgetWidth(#GID_LblLocalBranch) - 150
If cbLocalW < 120 : cbLocalW = 120 : EndIf
ResizeGadget(#GID_CbLocalBranch, RightOf(#GID_LblLocalBranch), yLocalBranch, cbLocalW, #UI_RowH)
ResizeGadget(#GID_BtnNewLocalBranch, RightOf(#GID_CbLocalBranch) + #UI_Inset, yLocalBranch, 150, #UI_RowH)
; REMOTE: URL + combo branche distante + bouton
Protected yRemoteUrl = GadgetY(#GID_EdRemote)
Protected edRemoteW = GadgetWidth(#GID_FrmRemote) - #UI_Inset*2 - GadgetWidth(#GID_LblRemote) - #UI_Inset
If edRemoteW < 120 : edRemoteW = 120 : EndIf
ResizeGadget(#GID_EdRemote, RightOf(#GID_LblRemote) + #UI_Inset, yRemoteUrl, edRemoteW, #UI_RowH)
Protected yRemoteBranch = GadgetY(#GID_CbRemoteBranch)
Protected cbRemoteW = GadgetWidth(#GID_FrmRemote) - #UI_Inset*3 - GadgetWidth(#GID_LblRemoteBranch) - 160
If cbRemoteW < 120 : cbRemoteW = 120 : EndIf
ResizeGadget(#GID_CbRemoteBranch, RightOf(#GID_LblRemoteBranch), yRemoteBranch, cbRemoteW, #UI_RowH)
ResizeGadget(#GID_BtnNewRemoteBranch, RightOf(#GID_CbRemoteBranch) + #UI_Inset, yRemoteBranch, 160, #UI_RowH)
; FILES: prend tout l'espace restant
Protected filesTop = BottomOf(#GID_FrmRemote) + #UI_Inset Protected filesTop = BottomOf(#GID_FrmRemote) + #UI_Inset
Protected filesH = panelH - filesTop - #UI_Inset Protected filesH = panelH - filesTop - #UI_Inset
If filesH < 150 : filesH = 150 : EndIf
ResizeGadget(#GID_FrmFiles, #UI_Inset, filesTop, panelW - #UI_Inset*2, filesH) ResizeGadget(#GID_FrmFiles, #UI_Inset, filesTop, panelW - #UI_Inset*2, filesH)
Protected listMargin = #UI_Inset
Protected listH = filesH - #UI_RowH*2 - #UI_Inset*4 - #UI_FrameHeaderH Protected listH = filesH - #UI_RowH*2 - #UI_Inset*4 - #UI_FrameHeaderH
If listH < 100 : listH = 100 : EndIf If listH < 100 : listH = 100 : EndIf
ResizeGadget(#GID_ListStatus, #UI_Inset, #UI_FrameHeaderH, GadgetWidth(#GID_FrmFiles) - #UI_Inset*2, listH) ResizeGadget(#GID_ListStatus, #UI_Inset, #UI_FrameHeaderH, GadgetWidth(#GID_FrmFiles) - #UI_Inset*2, listH)
; Buttons row positions under list
Protected btnY = #UI_FrameHeaderH + listH + #UI_Inset Protected btnY = #UI_FrameHeaderH + listH + #UI_Inset
ResizeGadget(#GID_BtnRestore, #UI_Inset + 10, btnY, 110, #UI_RowH) ResizeGadget(#GID_BtnRestore, #UI_Inset + 10, btnY, 110, #UI_RowH)
ResizeGadget(#GID_BtnRename, #UI_Inset + 130, btnY, 110, #UI_RowH) ResizeGadget(#GID_BtnRename, #UI_Inset + 130, btnY, 110, #UI_RowH)
ResizeGadget(#GID_BtnDelete, #UI_Inset + 250, btnY, 110, #UI_RowH) ResizeGadget(#GID_BtnDelete, #UI_Inset + 250, btnY, 110, #UI_RowH)
ResizeGadget(#GID_BtnIgnore, #UI_Inset + 370, btnY, 110, #UI_RowH) ResizeGadget(#GID_BtnIgnore, #UI_Inset + 370, btnY, 110, #UI_RowH)
; Commit message line under the buttons
Protected msgY = btnY + #UI_RowH + #UI_Inset Protected msgY = btnY + #UI_RowH + #UI_Inset
ResizeGadget(#GID_LblMessage, #UI_Inset + 10, msgY + 4, 80, 22) ResizeGadget(#GID_LblMessage, #UI_Inset + 10, msgY + 4, 80, 22)
ResizeGadget(#GID_BtnCommit, GadgetWidth(#GID_FrmFiles) - #UI_Inset - 100, msgY - 2, 100, #UI_RowH) ResizeGadget(#GID_BtnCommit, GadgetWidth(#GID_FrmFiles) - #UI_Inset - 100, msgY - 2, 100, #UI_RowH)
ResizeGadget(#GID_EdMessage, #UI_Inset + 95, msgY, GadgetX(#GID_BtnCommit) - (#UI_Inset + 95) - #UI_Inset, #UI_RowH) ResizeGadget(#GID_EdMessage, #UI_Inset + 95, msgY, GadgetX(#GID_BtnCommit) - (#UI_Inset + 95) - #UI_Inset, #UI_RowH)
; TAB 2: History List + editor ; === Onglet 2 : History ===
Protected histListH = panelH - #UI_Margin*2 - #UI_RowH - 10 - 150 - 10 Protected histListH = panelH - #UI_Margin*2 - #UI_RowH - 10 - 150 - 10
If histListH < 100 : histListH = 100 : EndIf If histListH < 100 : histListH = 100 : EndIf
ResizeGadget(#GID_ListHistory, #UI_Inset, #UI_Inset, panelW - #UI_Inset*2, histListH) ResizeGadget(#GID_ListHistory, #UI_Inset, #UI_Inset, panelW - #UI_Inset*2, histListH)
ResizeGadget(#GID_BtnRestoreCommit, #UI_Inset, #UI_Inset + histListH + #UI_Inset, 180, #UI_RowH) ResizeGadget(#GID_BtnRestoreCommit, #UI_Inset, #UI_Inset + histListH + #UI_Inset, 180, #UI_RowH)
ResizeGadget(#GID_TxtCommitInfo, #UI_Inset, panelH - #UI_Inset - 150, panelW - #UI_Inset*2, 150) ResizeGadget(#GID_TxtCommitInfo, #UI_Inset, panelH - #UI_Inset - 150, panelW - #UI_Inset*2, 150)
; TAB 3: .gitignore ; === Onglet 3 : .gitignore ===
Protected gitEdH = panelH - #UI_Inset*4 - #UI_RowH Protected gitEdH = panelH - #UI_Inset*4 - #UI_RowH
ResizeGadget(#GID_TxtGitIgnore, #UI_Inset, #UI_Inset, panelW - #UI_Inset*2, gitEdH) ResizeGadget(#GID_TxtGitIgnore, #UI_Inset, #UI_Inset, panelW - #UI_Inset*2, gitEdH)
ResizeGadget(#GID_BtnSaveGitIgnore, #UI_Inset, #UI_Inset + gitEdH + #UI_Inset, 100, #UI_RowH) ResizeGadget(#GID_BtnSaveGitIgnore, #UI_Inset, #UI_Inset + gitEdH + #UI_Inset, 100, #UI_RowH)
; TAB 4: Config frame fits content (kept constant height) ; Onglet 4 : statique (inchangé)
; (no additional dynamic resize needed here)
EndProcedure EndProcedure
; ----------------------------------------------------------------------------- ; -----------------------------------------------------------------------------
; Tooltips & i18n ; 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.
@@ -573,8 +605,18 @@ Procedure ApplyToolTips()
; --- Remote / Branch --- ; --- Remote / Branch ---
GadgetToolTip(#GID_EdRemote, T("tip.remote", "URL du remote (ex.: https://... ou git@host:org/repo.git)")) GadgetToolTip(#GID_EdRemote, T("tip.remote", "URL du remote (ex.: https://... ou git@host:org/repo.git)"))
GadgetToolTip(#GID_CbBranch, T("tip.branch.select", "Choisir la branche active"))
GadgetToolTip(#GID_BtnNewBranch, T("tip.branch.new", "Créer une nouvelle branche")) ; Local branches
GadgetToolTip(#GID_CbLocalBranch, T("tip.branch.local.select", "Choisir la branche locale active"))
GadgetToolTip(#GID_BtnNewLocalBranch,T("tip.branch.local.new", "Créer une nouvelle branche locale"))
; Remote branches
GadgetToolTip(#GID_CbRemoteBranch, T("tip.branch.remote.select", "Choisir une branche distante (remote-tracking)"))
GadgetToolTip(#GID_BtnNewRemoteBranch,T("tip.branch.remote.new", "Créer une branche sur le dépôt distant / publier"))
; --- Remote / Branch ---
GadgetToolTip(#GID_EdRemote, T("tip.remote", "URL du remote (ex.: https://... ou git@host:org/repo.git)"))
GadgetToolTip(#GID_BtnClone, T("tip.clone", "Cloner depuis lURL remote")) GadgetToolTip(#GID_BtnClone, T("tip.clone", "Cloner depuis lURL remote"))
GadgetToolTip(#GID_BtnPull, T("tip.pull", "Récupérer et fusionner depuis le remote")) GadgetToolTip(#GID_BtnPull, T("tip.pull", "Récupérer et fusionner depuis le remote"))
GadgetToolTip(#GID_BtnPush, T("tip.push", "Envoyer vos commits sur le remote")) GadgetToolTip(#GID_BtnPush, T("tip.push", "Envoyer vos commits sur le remote"))
@@ -645,8 +687,8 @@ Procedure OpenGUI()
; =========================================================================== ; ===========================================================================
AddGadgetItem(#GID_Panel, -1, T("Tab.Repo", "Dépôt")) AddGadgetItem(#GID_Panel, -1, T("Tab.Repo", "Dépôt"))
; ---- Frame: Local repository ------------------------------------------------ ; ---- Frame: Local repository ------------------------------------------------
FrameGadget(#GID_FrmLocal, #UI_Inset, #UI_Inset, GadgetWidth(#GID_Panel) - #UI_Inset*2, #UI_FrameHeaderH + #UI_RowH*2 + #UI_Inset*2, T("Local.FrameTitle", "Dépôt local"), #PB_Frame_Container) FrameGadget(#GID_FrmLocal, #UI_Inset, #UI_Inset, GadgetWidth(#GID_Panel) - #UI_Inset*2, #UI_FrameHeaderH + #UI_RowH*3 + #UI_Inset*3, T("Local.FrameTitle", "Dépôt local"), #PB_Frame_Container)
TextGadget(#GID_LblRepo, #UI_Inset, #UI_FrameHeaderH, 70, #UI_RowH, T("Local.Label.Repo","Dépôt :")) TextGadget(#GID_LblRepo, #UI_Inset, #UI_FrameHeaderH, 70, #UI_RowH, T("Local.Label.Repo","Dépôt :"))
StringGadget(#GID_EdRepo, RightOf(#GID_LblRepo) + #UI_Inset, #UI_FrameHeaderH, GadgetWidth(#GID_FrmLocal) - #UI_Inset*4 - 70 - #UI_BtnW, #UI_RowH, repoDir$) StringGadget(#GID_EdRepo, RightOf(#GID_LblRepo) + #UI_Inset, #UI_FrameHeaderH, GadgetWidth(#GID_FrmLocal) - #UI_Inset*4 - 70 - #UI_BtnW, #UI_RowH, repoDir$)
@@ -654,55 +696,76 @@ Procedure OpenGUI()
ButtonGadget(#GID_BtnInit, #UI_Inset, BottomOf(#GID_BtnBrowseRepo) + #UI_Inset, #UI_BtnW, #UI_RowH, T("Local.Button.Init","Init Dépôt")) ButtonGadget(#GID_BtnInit, #UI_Inset, BottomOf(#GID_BtnBrowseRepo) + #UI_Inset, #UI_BtnW, #UI_RowH, T("Local.Button.Init","Init Dépôt"))
ButtonGadget(#GID_BtnRefresh, RightOf(#GID_BtnInit) + #UI_Inset, GadgetY(#GID_BtnInit), #UI_BtnW, #UI_RowH, T("Local.Button.Refresh","Rafraîchir")) ButtonGadget(#GID_BtnRefresh, RightOf(#GID_BtnInit) + #UI_Inset, GadgetY(#GID_BtnInit), #UI_BtnW, #UI_RowH, T("Local.Button.Refresh","Rafraîchir"))
; --- NEW: branche locale (sélecteur + bouton) ---
Define yLocalBranch = BottomOf(#GID_BtnRefresh) + #UI_Inset
TextGadget(#GID_LblLocalBranch, #UI_Inset, yLocalBranch, 120, #UI_RowH, T("Local.Label.Branch","Branche locale :"))
ComboBoxGadget(#GID_CbLocalBranch, RightOf(#GID_LblLocalBranch), yLocalBranch, GadgetWidth(#GID_FrmLocal) - #UI_Inset*4 - 120 - 150, #UI_RowH, #PB_ComboBox_Editable)
ButtonGadget(#GID_BtnNewLocalBranch, RightOf(#GID_CbLocalBranch) + #UI_Inset, yLocalBranch, 150, #UI_RowH, T("Local.Button.NewBranch","+ Nouvelle branche"))
CloseGadgetList() CloseGadgetList()
; ---- Frame: Remote / Branche ------------------------------------------------ ; ---- Frame: Remote / Branche ------------------------------------------------
Define yRemote = BottomOf(#GID_FrmLocal) + #UI_Inset Define yRemote = BottomOf(#GID_FrmLocal) + #UI_Inset
FrameGadget(#GID_FrmRemote, #UI_Inset, yRemote, GadgetWidth(#GID_Panel) - #UI_Inset*2, #UI_FrameHeaderH + #UI_RowH*4 + #UI_Inset*4, T("Remote.FrameTitle","Distant (remote / branche)"), #PB_Frame_Container) FrameGadget(#GID_FrmRemote, #UI_Inset, yRemote, GadgetWidth(#GID_Panel) - #UI_Inset*2, #UI_FrameHeaderH + #UI_RowH*5 + #UI_Inset*5, T("Remote.FrameTitle","Distant (remote / branche)"), #PB_Frame_Container)
; Ligne 1: URL du remote
TextGadget(#GID_LblRemote, #UI_Inset, #UI_FrameHeaderH, 70, #UI_RowH, T("Remote.Label.Remote","Remote :")) TextGadget(#GID_LblRemote, #UI_Inset, #UI_FrameHeaderH, 70, #UI_RowH, T("Remote.Label.Remote","Remote :"))
StringGadget(#GID_EdRemote, RightOf(#GID_LblRemote) + #UI_Inset, #UI_FrameHeaderH, 420, #UI_RowH, "") StringGadget(#GID_EdRemote, RightOf(#GID_LblRemote) + #UI_Inset, #UI_FrameHeaderH, 420, #UI_RowH, "")
TextGadget(#GID_LblBranch, RightOf(#GID_EdRemote) + #UI_Inset, #UI_FrameHeaderH, 80, #UI_RowH, T("Remote.Label.Branch","Branche :")) ; Ligne 2: Branche distante (sélecteur + bouton)
ComboBoxGadget(#GID_CbBranch, RightOf(#GID_LblBranch), #UI_FrameHeaderH, 220, #UI_RowH, #PB_ComboBox_Editable) Define yRemoteBranch = BottomOf(#GID_EdRemote) + #UI_Inset
ButtonGadget(#GID_BtnNewBranch, RightOf(#GID_CbBranch) + #UI_Inset, #UI_FrameHeaderH, 130, #UI_RowH, T("Remote.Button.NewBranch","New branch")) TextGadget(#GID_LblRemoteBranch, #UI_Inset, yRemoteBranch, 130, #UI_RowH, T("Remote.Label.BranchRemote","Branche distante :"))
ComboBoxGadget(#GID_CbRemoteBranch, RightOf(#GID_LblRemoteBranch), yRemoteBranch, 220, #UI_RowH)
ButtonGadget(#GID_BtnClone, #UI_Inset, BottomOf(#GID_LblRemote) + #UI_Inset, #UI_BtnW, #UI_RowH, T("Remote.Button.Clone","Clone")) ButtonGadget(#GID_BtnNewRemoteBranch, RightOf(#GID_CbRemoteBranch) + #UI_Inset, yRemoteBranch, 160, #UI_RowH, T("Remote.Button.NewRemoteBranch","+ Nouvelle branche distante"))
; Ligne 3: Actions réseau
ButtonGadget(#GID_BtnClone, #UI_Inset, BottomOf(#GID_LblRemoteBranch) + #UI_Inset, #UI_BtnW, #UI_RowH, T("Remote.Button.Clone","Clone"))
ButtonGadget(#GID_BtnPull, RightOf(#GID_BtnClone) + #UI_Inset, GadgetY(#GID_BtnClone), #UI_BtnW, #UI_RowH, T("Remote.Button.Pull","Pull")) ButtonGadget(#GID_BtnPull, RightOf(#GID_BtnClone) + #UI_Inset, GadgetY(#GID_BtnClone), #UI_BtnW, #UI_RowH, T("Remote.Button.Pull","Pull"))
ButtonGadget(#GID_BtnPush, RightOf(#GID_BtnPull) + #UI_Inset, GadgetY(#GID_BtnClone), #UI_BtnW, #UI_RowH, T("Remote.Button.Push","Push")) ButtonGadget(#GID_BtnPush, RightOf(#GID_BtnPull) + #UI_Inset, GadgetY(#GID_BtnClone), #UI_BtnW, #UI_RowH, T("Remote.Button.Push","Push"))
; Ligne 4: Statut & dernière synchro
Define yStatus = BottomOf(#GID_BtnClone) + #UI_Inset Define yStatus = BottomOf(#GID_BtnClone) + #UI_Inset
TextGadget(#GID_LblRemoteStatus, #UI_Inset, yStatus, 70, #UI_RowH, T("Remote.Status.Label","Status :")) TextGadget(#GID_LblRemoteStatus, #UI_Inset, yStatus, 70, #UI_RowH, T("Remote.Status.Label","Status :"))
TextGadget(#GID_TxtRemoteStatus, RightOf(#GID_LblRemoteStatus), yStatus, 200, #UI_RowH, T("Remote.Status.Checking","Vérification..."), #PB_Text_Border) TextGadget(#GID_TxtRemoteStatus, RightOf(#GID_LblRemoteStatus), yStatus, 200, #UI_RowH, T("Remote.Status.Checking","Vérification..."), #PB_Text_Border)
TextGadget(#GID_LblLastFetch, RightOf(#GID_TxtRemoteStatus) + 15, yStatus, 110, #UI_RowH, T("Remote.LastSync.Label","Dernière sync :")) TextGadget(#GID_LblLastFetch, RightOf(#GID_TxtRemoteStatus) + 15, yStatus, 110, #UI_RowH, T("Remote.LastSync.Label","Dernière sync :"))
TextGadget(#GID_TxtLastFetch, RightOf(#GID_LblLastFetch), yStatus, 120, #UI_RowH, "-", #PB_Text_Border) TextGadget(#GID_TxtLastFetch, RightOf(#GID_LblLastFetch), yStatus, 120, #UI_RowH, "-", #PB_Text_Border)
ButtonGadget(#GID_BtnVerify, RightOf(#GID_TxtLastFetch) + 10, yStatus - 2, 90, #UI_RowH, T("Remote.Button.Verify","Vérifier")) ButtonGadget(#GID_BtnVerify, RightOf(#GID_TxtLastFetch) + 10, yStatus - 2, 90, #UI_RowH, T("Remote.Button.Verify","Vérifier"))
; Ligne 5: Action en cours
TextGadget(#GID_LblAction, #UI_Inset, BottomOf(#GID_LblRemoteStatus) + #UI_Inset, 60, 20, T("Remote.Action.Label","Action :")) TextGadget(#GID_LblAction, #UI_Inset, BottomOf(#GID_LblRemoteStatus) + #UI_Inset, 60, 20, T("Remote.Action.Label","Action :"))
TextGadget(#GID_TxtAction, RightOf(#GID_LblAction), GadgetY(#GID_LblAction), 300, 20, "-", #PB_Text_Border) TextGadget(#GID_TxtAction, RightOf(#GID_LblAction), GadgetY(#GID_LblAction), 300, 20, "-", #PB_Text_Border)
CloseGadgetList() CloseGadgetList()
; ---- Frame: Files & changes ------------------------------------------------- ; ---- Frame: Files & changes -------------------------------------------------
Define yFiles = BottomOf(#GID_FrmRemote) + #UI_Inset Define yFiles = BottomOf(#GID_FrmRemote) + #UI_Inset
Define hFiles = panelH - yFiles - #UI_Inset Define hFiles = panelH - yFiles - #UI_Inset
FrameGadget(#GID_FrmFiles, #UI_Inset, yFiles, GadgetWidth(#GID_Panel) - #UI_Inset*2, hFiles, T("Files.FrameTitle","Fichiers & modifications"), #PB_Frame_Container) If hFiles < 260 : hFiles = 260 : EndIf ; hauteur mini du frame pour éviter valeurs négatives
ListIconGadget(#GID_ListStatus, #UI_Inset, #UI_FrameHeaderH, GadgetWidth(#GID_FrmFiles) - #UI_Inset*2, hFiles - #UI_RowH*2 - #UI_Inset*4 - #UI_FrameHeaderH, T("Files.List.Path","Path"), 300, #PB_ListIcon_CheckBoxes | #PB_ListIcon_MultiSelect | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection) FrameGadget(#GID_FrmFiles, #UI_Inset, yFiles, GadgetWidth(#GID_Panel) - #UI_Inset*2, hFiles, T("Files.FrameTitle","Fichiers & modifications"), #PB_Frame_Container)
AddGadgetColumn(#GID_ListStatus, 1, T("Files.List.Status","Status"), 80)
AddGadgetColumn(#GID_ListStatus, 2, T("Files.List.Description","Description"), 300) ; Hauteur de la liste avec garde-fou (même logique que dans ResizeGUI)
Define listH = hFiles - #UI_RowH*2 - #UI_Inset*4 - #UI_FrameHeaderH
Define yLocalActions = BottomOf(#GID_ListStatus) + #UI_Inset If listH < 100 : listH = 100 : EndIf
ButtonGadget(#GID_BtnRestore, #UI_Inset + 10, yLocalActions, 110, #UI_RowH, T("LocalActions.Button.Restore","Restaurer"))
ButtonGadget(#GID_BtnRename, #UI_Inset + 130, yLocalActions, 110, #UI_RowH, T("LocalActions.Button.Rename","Renommer")) ListIconGadget(#GID_ListStatus, #UI_Inset, #UI_FrameHeaderH, GadgetWidth(#GID_FrmFiles) - #UI_Inset*2, listH, T("Files.List.Path","Path"), 300, #PB_ListIcon_CheckBoxes | #PB_ListIcon_MultiSelect | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
ButtonGadget(#GID_BtnDelete, #UI_Inset + 250, yLocalActions, 110, #UI_RowH, T("LocalActions.Button.Delete","Supprimer")) AddGadgetColumn(#GID_ListStatus, 1, T("Files.List.Status","Status"), 80)
ButtonGadget(#GID_BtnIgnore, #UI_Inset + 370, yLocalActions, 110, #UI_RowH, T("LocalActions.Button.Ignore","Ignorer")) AddGadgetColumn(#GID_ListStatus, 2, T("Files.List.Description","Description"), 300)
Define yMsg = BottomOf(#GID_BtnRestore) + #UI_Inset ; Ligne boutons sous la liste
TextGadget(#GID_LblMessage, #UI_Inset + 10, yMsg + 4, 80, 22, T("Commit.Label.Message","Message :")) Define yLocalActions = #UI_FrameHeaderH + listH + #UI_Inset
StringGadget(#GID_EdMessage, #UI_Inset + 95, yMsg, GadgetWidth(#GID_FrmFiles) - #UI_Inset*2 - 95 - 110, #UI_RowH, "") ButtonGadget(#GID_BtnRestore, #UI_Inset + 10, yLocalActions, 110, #UI_RowH, T("LocalActions.Button.Restore","Restaurer"))
ButtonGadget(#GID_BtnCommit, GadgetWidth(#GID_FrmFiles) - #UI_Inset - 100, yMsg - 2, 100, #UI_RowH, T("Commit.Button.Commit","Commit")) ButtonGadget(#GID_BtnRename, #UI_Inset + 130, yLocalActions, 110, #UI_RowH, T("LocalActions.Button.Rename","Renommer"))
CloseGadgetList() ButtonGadget(#GID_BtnDelete, #UI_Inset + 250, yLocalActions, 110, #UI_RowH, T("LocalActions.Button.Delete","Supprimer"))
ButtonGadget(#GID_BtnIgnore, #UI_Inset + 370, yLocalActions, 110, #UI_RowH, T("LocalActions.Button.Ignore","Ignorer"))
; Message de commit
Define yMsg = yLocalActions + #UI_RowH + #UI_Inset
TextGadget(#GID_LblMessage, #UI_Inset + 10, yMsg + 4, 80, 22, T("Commit.Label.Message","Message :"))
StringGadget(#GID_EdMessage, #UI_Inset + 95, yMsg, GadgetWidth(#GID_FrmFiles) - #UI_Inset*2 - 95 - 110, #UI_RowH, "")
ButtonGadget(#GID_BtnCommit, GadgetWidth(#GID_FrmFiles) - #UI_Inset - 100, yMsg - 2, 100, #UI_RowH, T("Commit.Button.Commit","Commit"))
CloseGadgetList()
; =========================================================================== ; ===========================================================================
; TAB 2: HISTORY ; TAB 2: HISTORY
@@ -730,8 +793,8 @@ Procedure OpenGUI()
; TAB 4: CONFIG ; TAB 4: CONFIG
; =========================================================================== ; ===========================================================================
AddGadgetItem(#GID_Panel, -1, T("Tabs.Config","Config")) AddGadgetItem(#GID_Panel, -1, T("Tabs.Config","Config"))
; --- Frame: Paramètres de lapplication (LANGUE, etc.) --- ; --- Frame: Paramètres de lapplication (LANGUE, etc.) ---
FrameGadget(#GID_FrmApp, #UI_Inset, #UI_Inset, GadgetWidth(#GID_Panel) - #UI_Inset*2, 90, T("App.FrameTitle","Paramètres de lapplication"), #PB_Frame_Container) FrameGadget(#GID_FrmApp, #UI_Inset, #UI_Inset, GadgetWidth(#GID_Panel) - #UI_Inset*2, 90, T("App.FrameTitle","Paramètres de lapplication"), #PB_Frame_Container)
TextGadget(#GID_LblAppLang, #UI_Inset + 10, #UI_Inset + 35, 120, 22, T("App.Label.Lang","Langue")) TextGadget(#GID_LblAppLang, #UI_Inset + 10, #UI_Inset + 35, 120, 22, T("App.Label.Lang","Langue"))
ComboBoxGadget(#GID_CbAppLang, #UI_Inset + 140, #UI_Inset + 33, 220, #UI_RowH) ComboBoxGadget(#GID_CbAppLang, #UI_Inset + 140, #UI_Inset + 33, 220, #UI_RowH)
@@ -739,7 +802,7 @@ Procedure OpenGUI()
AddGadgetItem(#GID_CbAppLang, -1, "English (en)") AddGadgetItem(#GID_CbAppLang, -1, "English (en)")
SetGadgetState(#GID_CbAppLang, 0) ; défaut: fr SetGadgetState(#GID_CbAppLang, 0) ; défaut: fr
CloseGadgetList() CloseGadgetList()
; --- Frame: Configuration Git (identité + portée) --- ; --- Frame: Configuration Git (identité + portée) ---
Define yCfg = BottomOf(#GID_FrmApp) + #UI_Inset Define yCfg = BottomOf(#GID_FrmApp) + #UI_Inset
FrameGadget(#GID_FrmConfig, #UI_Inset, yCfg, GadgetWidth(#GID_Panel) - #UI_Inset*2, 170, T("Config.FrameTitle","Configuration Git"), #PB_Frame_Container) FrameGadget(#GID_FrmConfig, #UI_Inset, yCfg, GadgetWidth(#GID_Panel) - #UI_Inset*2, 170, T("Config.FrameTitle","Configuration Git"), #PB_Frame_Container)
@@ -755,45 +818,44 @@ Procedure OpenGUI()
SetGadgetState(#GID_CbScope, 0) SetGadgetState(#GID_CbScope, 0)
ButtonGadget(#GID_BtnSaveCfg, GadgetWidth(#GID_FrmConfig) - #UI_Inset - 110, #UI_Inset + 100, 110, #UI_RowH, T("Config.Button.Save","Enregistrer")) ButtonGadget(#GID_BtnSaveCfg, GadgetWidth(#GID_FrmConfig) - #UI_Inset - 110, #UI_Inset + 100, 110, #UI_RowH, T("Config.Button.Save","Enregistrer"))
CloseGadgetList() CloseGadgetList()
; --- Frame: Proxy HTTP(S) --- ; --- Frame: Proxy HTTP(S) ---
Define yProxy = BottomOf(#GID_FrmConfig) + #UI_Inset Define yProxy = BottomOf(#GID_FrmConfig) + #UI_Inset
FrameGadget(#GID_FrmProxy, #UI_Inset, yProxy, GadgetWidth(#GID_Panel) - #UI_Inset*2, 260, T("Proxy.FrameTitle","Proxy HTTP / HTTPS"), #PB_Frame_Container) FrameGadget(#GID_FrmProxy, #UI_Inset, yProxy, GadgetWidth(#GID_Panel) - #UI_Inset*2, 260, T("Proxy.FrameTitle","Proxy HTTP / HTTPS"), #PB_Frame_Container)
; Activation ; Activation
CheckBoxGadget(#GID_ChkProxy, #UI_Inset + 10, #UI_Inset + 30, 280, #UI_RowH, T("Proxy.Enable","Activer le proxy")) CheckBoxGadget(#GID_ChkProxy, #UI_Inset + 10, #UI_Inset + 30, 280, #UI_RowH, T("Proxy.Enable","Activer le proxy"))
SetGadgetState(#GID_ChkProxy, 0) SetGadgetState(#GID_ChkProxy, 0)
; --- HTTP row 1 (server/port) ; --- HTTP row 1 (server/port)
TextGadget(#GID_LblHttpSrv, #UI_Inset + 10, #UI_Inset + 70, 100, #UI_RowH, "HTTP serveur") TextGadget(#GID_LblHttpSrv, #UI_Inset + 10, #UI_Inset + 70, 100, #UI_RowH, "HTTP serveur")
StringGadget(#GID_EdHttpSrv, #UI_Inset + 110, #UI_Inset + 68, 260, #UI_RowH, "") StringGadget(#GID_EdHttpSrv, #UI_Inset + 110, #UI_Inset + 68, 260, #UI_RowH, "")
TextGadget(#GID_LblHttpPort, RightOf(#GID_EdHttpSrv) + #UI_Inset, #UI_Inset + 70, 40, #UI_RowH, "Port") TextGadget(#GID_LblHttpPort, RightOf(#GID_EdHttpSrv) + #UI_Inset, #UI_Inset + 70, 40, #UI_RowH, "Port")
StringGadget(#GID_EdHttpPort, RightOf(#GID_LblHttpPort) + #UI_Inset, #UI_Inset + 68, 80, #UI_RowH, "") StringGadget(#GID_EdHttpPort, RightOf(#GID_LblHttpPort) + #UI_Inset, #UI_Inset + 68, 80, #UI_RowH, "")
; --- HTTP row 2 (user/pass) ; --- HTTP row 2 (user/pass)
TextGadget(#GID_LblHttpUser, #UI_Inset + 10, #UI_Inset + 105, 100, #UI_RowH, "HTTP login") TextGadget(#GID_LblHttpUser, #UI_Inset + 10, #UI_Inset + 105, 100, #UI_RowH, "HTTP login")
StringGadget(#GID_EdHttpUser, #UI_Inset + 110, #UI_Inset + 103, 260, #UI_RowH, "") StringGadget(#GID_EdHttpUser, #UI_Inset + 110, #UI_Inset + 103, 260, #UI_RowH, "")
TextGadget(#GID_LblHttpPass, RightOf(#GID_EdHttpUser) + #UI_Inset, #UI_Inset + 105, 70, #UI_RowH, "Password") TextGadget(#GID_LblHttpPass, RightOf(#GID_EdHttpUser) + #UI_Inset, #UI_Inset + 105, 70, #UI_RowH, "Password")
StringGadget(#GID_EdHttpPass, RightOf(#GID_LblHttpPass) + #UI_Inset, #UI_Inset + 103, 180, #UI_RowH, "") StringGadget(#GID_EdHttpPass, RightOf(#GID_LblHttpPass) + #UI_Inset, #UI_Inset + 103, 180, #UI_RowH, "")
SetGadgetAttribute(#GID_EdHttpPass, #PB_String_Password, #True) SetGadgetAttribute(#GID_EdHttpPass, #PB_String_Password, #True)
; --- HTTPS row 1 (server/port) ; --- HTTPS row 1 (server/port)
TextGadget(#GID_LblHttpsSrv, #UI_Inset + 10, #UI_Inset + 145, 100, #UI_RowH, "HTTPS serveur") TextGadget(#GID_LblHttpsSrv, #UI_Inset + 10, #UI_Inset + 145, 100, #UI_RowH, "HTTPS serveur")
StringGadget(#GID_EdHttpsSrv, #UI_Inset + 110, #UI_Inset + 143, 260, #UI_RowH, "") StringGadget(#GID_EdHttpsSrv, #UI_Inset + 110, #UI_Inset + 143, 260, #UI_RowH, "")
TextGadget(#GID_LblHttpsPort, RightOf(#GID_EdHttpsSrv) + #UI_Inset, #UI_Inset + 145, 40, #UI_RowH, "Port") TextGadget(#GID_LblHttpsPort, RightOf(#GID_EdHttpsSrv) + #UI_Inset, #UI_Inset + 145, 40, #UI_RowH, "Port")
StringGadget(#GID_EdHttpsPort, RightOf(#GID_LblHttpsPort) + #UI_Inset, #UI_Inset + 143, 80, #UI_RowH, "") StringGadget(#GID_EdHttpsPort, RightOf(#GID_LblHttpsPort) + #UI_Inset, #UI_Inset + 143, 80, #UI_RowH, "")
; --- HTTPS row 2 (user/pass) ; --- HTTPS row 2 (user/pass)
TextGadget(#GID_LblHttpsUser, #UI_Inset + 10, #UI_Inset + 180, 100, #UI_RowH, "HTTPS login") TextGadget(#GID_LblHttpsUser, #UI_Inset + 10, #UI_Inset + 180, 100, #UI_RowH, "HTTPS login")
StringGadget(#GID_EdHttpsUser, #UI_Inset + 110, #UI_Inset + 178, 260, #UI_RowH, "") StringGadget(#GID_EdHttpsUser, #UI_Inset + 110, #UI_Inset + 178, 260, #UI_RowH, "")
TextGadget(#GID_LblHttpsPass, RightOf(#GID_EdHttpsUser) + #UI_Inset, #UI_Inset + 180, 70, #UI_RowH, "Password") TextGadget(#GID_LblHttpsPass, RightOf(#GID_EdHttpsUser) + #UI_Inset, #UI_Inset + 180, 70, #UI_RowH, "Password")
StringGadget(#GID_EdHttpsPass, RightOf(#GID_LblHttpsPass) + #UI_Inset, #UI_Inset + 178, 180, #UI_RowH, "") StringGadget(#GID_EdHttpsPass, RightOf(#GID_LblHttpsPass) + #UI_Inset, #UI_Inset + 178, 180, #UI_RowH, "")
SetGadgetAttribute(#GID_EdHttpsPass, #PB_String_Password, #True) SetGadgetAttribute(#GID_EdHttpsPass, #PB_String_Password, #True)
; Bouton Appliquer ; Bouton Appliquer
ButtonGadget(#GID_BtnApplyProxy, GadgetWidth(#GID_FrmProxy) - #UI_Inset - 140, #UI_Inset + 215, 140, #UI_RowH, T("Proxy.Apply","Appliquer proxy")) ButtonGadget(#GID_BtnApplyProxy, GadgetWidth(#GID_FrmProxy) - #UI_Inset - 140, #UI_Inset + 215, 140, #UI_RowH, T("Proxy.Apply","Appliquer proxy"))
CloseGadgetList() CloseGadgetList()
; --- End tabs --- ; --- End tabs ---
CloseGadgetList() CloseGadgetList()
@@ -807,12 +869,12 @@ Procedure OpenGUI()
; Initial placement / placement initial ; Initial placement / placement initial
ResizeGUI() ResizeGUI()
; toolTip aide ; Tooltips
ApplyToolTips() ApplyToolTips()
ProcedureReturn #True ProcedureReturn #True
EndIf EndIf
ProcedureReturn #False
ProcedureReturn #False
EndProcedure EndProcedure
; ----------------------------------------------------------------------------- ; -----------------------------------------------------------------------------
@@ -1181,8 +1243,8 @@ EndProcedure
Main() Main()
; IDE Options = PureBasic 6.21 (Windows - x64) ; IDE Options = PureBasic 6.21 (Windows - x64)
; CursorPosition = 1032 ; CursorPosition = 591
; FirstLine = 1025 ; FirstLine = 521
; Folding = ------ ; Folding = ------
; EnableXP ; EnableXP
; DPIAware ; DPIAware