From 2d4b5cc36071f4497fb44358a7090354c51aa083 Mon Sep 17 00:00:00 2001 From: Johan 't Hart Date: Fri, 29 May 2009 00:30:53 +0200 Subject: [PATCH] Pick Ref: Made user able to pick a ref in the logviewer to view the log from. --- src/Resources/TortoiseProcENG.rc | Bin 430150 -> 430478 bytes src/TortoiseProc/BrowseRefsDlg.cpp | 2 +- src/TortoiseProc/GitLogListBase.h | 2 ++ src/TortoiseProc/LogDlg.cpp | 56 ++++++++++++++++++++++++++++++++++++- src/TortoiseProc/LogDlg.h | 4 ++- src/TortoiseProc/resource.h | Bin 159754 -> 159938 bytes 6 files changed, 61 insertions(+), 3 deletions(-) diff --git a/src/Resources/TortoiseProcENG.rc b/src/Resources/TortoiseProcENG.rc index 950b0a6eefaf31c0ee7f18f610099d70829100a5..234fdb2467aa1c79948dff0b4a12046a7a820797 100644 GIT binary patch delta 306 zcwRfUK&o%C)CRuk{Durh32VKU>#7w1`Q^K>FXkyd8S`F#H7G$0CXqBm4*x^($3m|Q>IeSh#lWHkL9zzjBDnkxKB0~v~P5~-P zX2<~Y@)**g{DR5v=hdm_csRefHash); + dlg.SetStartRef(selectedLeafs[0]->GetRefName()); dlg.DoModal(); } break; diff --git a/src/TortoiseProc/GitLogListBase.h b/src/TortoiseProc/GitLogListBase.h index 9de078558..937fb46f0 100644 --- a/src/TortoiseProc/GitLogListBase.h +++ b/src/TortoiseProc/GitLogListBase.h @@ -201,6 +201,8 @@ public: m_StartRef=StartRef; } + CString GetStartRef() const {return m_StartRef;} + volatile bool m_bExitThread; CWinThread* m_LoadingThread; diff --git a/src/TortoiseProc/LogDlg.cpp b/src/TortoiseProc/LogDlg.cpp index 52c1720b8..2a209e885 100644 --- a/src/TortoiseProc/LogDlg.cpp +++ b/src/TortoiseProc/LogDlg.cpp @@ -45,7 +45,7 @@ //#include "RepositoryInfo.h" //#include "EditPropertiesDlg.h" #include "FileDiffDlg.h" - +#include "BrowseRefsDlg.h" const UINT CLogDlg::m_FindDialogMessage = RegisterWindowMessage(FINDMSGSTRING); @@ -144,6 +144,7 @@ BEGIN_MESSAGE_MAP(CLogDlg, CResizableStandAloneDialog) ON_WM_SIZE() ON_BN_CLICKED(IDC_LOG_FIRSTPARENT, &CLogDlg::OnBnClickedFirstParent) ON_BN_CLICKED(IDC_REFRESH, &CLogDlg::OnBnClickedRefresh) + ON_BN_CLICKED(IDC_BUTTON_BROWSE_REF, &CLogDlg::OnBnClickedBrowseRef) ON_COMMAND(ID_LOGDLG_REFRESH,&CLogDlg::OnRefresh) ON_COMMAND(ID_LOGDLG_FIND,&CLogDlg::OnFind) ON_COMMAND(ID_LOGDLG_FOCUSFILTER,&CLogDlg::OnFocusFilter) @@ -236,6 +237,8 @@ BOOL CLogDlg::OnInitDialog() m_DateTo.SendMessage(DTM_SETMCSTYLE, 0, MCS_WEEKNUMBERS|MCS_NOTODAY|MCS_NOTRAILINGDATES|MCS_NOSELCHANGEONNAV); // resizable stuff + AddAnchor(IDC_STATIC_REF, TOP_LEFT); + AddAnchor(IDC_BUTTON_BROWSE_REF, TOP_LEFT); AddAnchor(IDC_FROMLABEL, TOP_LEFT); AddAnchor(IDC_DATEFROM, TOP_LEFT); AddAnchor(IDC_TOLABEL, TOP_LEFT); @@ -331,6 +334,8 @@ BOOL CLogDlg::OnInitDialog() m_LogList.FetchLogAsync(this); GetDlgItem(IDC_LOGLIST)->SetFocus(); + + ShowStartRef(); return FALSE; } @@ -2923,6 +2928,7 @@ void CLogDlg::OnSize(UINT nType, int cx, int cy) void CLogDlg::OnRefresh() { //if (GetDlgItem(IDC_GETALL)->IsWindowEnabled()) + ShowStartRef(); { m_limit = 0; this->m_LogProgress.SetPos(0); @@ -3042,6 +3048,54 @@ void CLogDlg::OnBnClickedAllBranch() FillLogMessageCtrl(false); } +void CLogDlg::OnBnClickedBrowseRef() +{ + CString newRef = CBrowseRefsDlg::PickRef(false,m_LogList.GetStartRef()); + if(newRef.IsEmpty()) + return; + + SetStartRef(newRef); + ((CButton*)GetDlgItem(IDC_LOG_ALLBRANCH))->SetCheck(0); + + OnBnClickedAllBranch(); +} + +void CLogDlg::ShowStartRef() +{ + //Show ref name on top + if(!::IsWindow(m_hWnd)) + return; + if(m_bAllBranch) + { + GetDlgItem(IDC_STATIC_REF)->SetWindowText(L""); + return; + } + + CString showStartRef = m_LogList.GetStartRef(); + if(showStartRef.IsEmpty()) + { + //Ref name is HEAD + g_Git.Run(L"git symbolic-ref HEAD",&showStartRef,CP_UTF8); + showStartRef.Trim(L"\r\n\t "); + } + + + if(wcsncmp(showStartRef,L"refs/",5) == 0) + showStartRef = showStartRef.Mid(5); + if(wcsncmp(showStartRef,L"heads/",6) == 0) + showStartRef = showStartRef.Mid(6); + + GetDlgItem(IDC_STATIC_REF)->SetWindowText(showStartRef); +} + +void CLogDlg::SetStartRef(const CString& StartRef) +{ + m_LogList.SetStartRef(StartRef); + + ShowStartRef(); +} + + void CLogDlg::OnBnClickedFirstParent() { diff --git a/src/TortoiseProc/LogDlg.h b/src/TortoiseProc/LogDlg.h index b67ff144e..37883ee1d 100644 --- a/src/TortoiseProc/LogDlg.h +++ b/src/TortoiseProc/LogDlg.h @@ -91,7 +91,8 @@ public: void ContinuousSelection(bool bCont = true) {m_bSelectionMustBeContinuous = bCont;} void SingleSelection(bool bSingle = true) {m_bSelectionMustBeSingle = bSingle;} void SetMergePath(const CTGitPath& mergepath) {m_mergePath = mergepath;} - void SetStartRef(const CString& StartRef) {m_LogList.SetStartRef(StartRef);} + void SetStartRef(const CString& StartRef); + void ShowStartRef(); /** * Provides selected commit hash if available, call after OK return from here * Empty if none @@ -137,6 +138,7 @@ protected: afx_msg void OnBnClickShowWholeProject(); afx_msg void OnBnClickedHidepaths(); afx_msg void OnBnClickedAllBranch(); + afx_msg void OnBnClickedBrowseRef(); afx_msg void OnBnClickedCheckStoponcopy(); afx_msg void OnDtnDropdownDatefrom(NMHDR *pNMHDR, LRESULT *pResult); diff --git a/src/TortoiseProc/resource.h b/src/TortoiseProc/resource.h index d1dc252656c93a367fd8d27851b55fa8f389fd77..bf74599abdb3ab058a5215b495f559bb2694ec76 100644 GIT binary patch delta 90 zcwPZo0Hyzm;0eOv34pW#Dm|A#J^>t;6m0<