From: Johan 't Hart Date: Thu, 28 May 2009 22:30:53 +0000 (+0200) Subject: Pick Ref: Made user able to pick a ref in the logviewer to view the log from. X-Git-Url: http://git.sourceforge.jp/view?p=tortoisegit%2FTortoiseGitJp.git;a=commitdiff_plain;h=2d4b5cc36071f4497fb44358a7090354c51aa083 Pick Ref: Made user able to pick a ref in the logviewer to view the log from. --- diff --git a/src/Resources/TortoiseProcENG.rc b/src/Resources/TortoiseProcENG.rc index 950b0a6..234fdb2 100644 Binary files a/src/Resources/TortoiseProcENG.rc and b/src/Resources/TortoiseProcENG.rc differ diff --git a/src/TortoiseProc/BrowseRefsDlg.cpp b/src/TortoiseProc/BrowseRefsDlg.cpp index ef93ba1..05d046c 100644 --- a/src/TortoiseProc/BrowseRefsDlg.cpp +++ b/src/TortoiseProc/BrowseRefsDlg.cpp @@ -542,7 +542,7 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh case eCmd_ViewLog: { CLogDlg dlg; - dlg.SetStartRef(selectedLeafs[0]->m_csRefHash); + dlg.SetStartRef(selectedLeafs[0]->GetRefName()); dlg.DoModal(); } break; diff --git a/src/TortoiseProc/GitLogListBase.h b/src/TortoiseProc/GitLogListBase.h index 9de0785..937fb46 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 52c1720..2a209e8 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 b67ff14..37883ee 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 d1dc252..bf74599 100644 Binary files a/src/TortoiseProc/resource.h and b/src/TortoiseProc/resource.h differ