From b4c11a6982ef2ad26c06b372c7f9a28b384014b4 Mon Sep 17 00:00:00 2001 From: Sup Yut Sum Date: Sun, 27 Jul 2014 09:49:00 +0800 Subject: [PATCH] Revision Graph: Add filter to walk from Only Local Branches Signed-off-by: Sup Yut Sum --- Languages/Tortoise.pot | 4 +++ src/Resources/TortoiseProcENG.rc | 3 +- .../RevisionGraph/RevGraphFilterDlg.cpp | 40 +++++++++++++++++++++- src/TortoiseProc/RevisionGraph/RevGraphFilterDlg.h | 5 ++- .../RevisionGraph/RevisionGraphDlg.cpp | 4 ++- .../RevisionGraph/RevisionGraphDlgFunc.cpp | 3 +- .../RevisionGraph/RevisionGraphWnd.cpp | 1 + src/TortoiseProc/RevisionGraph/RevisionGraphWnd.h | 1 + src/TortoiseProc/resource.h | 1 + 9 files changed, 57 insertions(+), 5 deletions(-) diff --git a/Languages/Tortoise.pot b/Languages/Tortoise.pot index c272d328d..015f35b9f 100644 --- a/Languages/Tortoise.pot +++ b/Languages/Tortoise.pot @@ -6454,6 +6454,10 @@ msgstr "" msgid "Only Current Branch" msgstr "" +#. Resource IDs: (1543) +msgid "Only Local Branches" +msgstr "" + #. Resource IDs: (1256) msgid "Only Merged Files" msgstr "" diff --git a/src/Resources/TortoiseProcENG.rc b/src/Resources/TortoiseProcENG.rc index 44375910d..e4e9bc788 100644 --- a/src/Resources/TortoiseProcENG.rc +++ b/src/Resources/TortoiseProcENG.rc @@ -1754,10 +1754,11 @@ BEGIN LTEXT "To:",IDC_STATIC,12,46,30,8 EDITTEXT IDC_TOREV,46,44,177,14,ES_AUTOHSCROLL PUSHBUTTON "RefBrowse",IDC_REV1BTN2,236,45,57,14 - CONTROL "Only Current Branch",IDC_CURRENT_BRANCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,70,268,10 + CONTROL "Only Current Branch",IDC_CURRENT_BRANCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,70,130,10 DEFPUSHBUTTON "&OK",IDOK,103,87,50,14 PUSHBUTTON "Cancel",IDCANCEL,157,87,50,14 PUSHBUTTON "&Reset filter",IDC_RESETFILTER,213,87,80,14 + CONTROL "Only Local Branches",IDC_LOCAL_BRANCHES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,163,70,130,10 END IDD_DIFFSUBMODULE DIALOGEX 0, 0, 381, 141 diff --git a/src/TortoiseProc/RevisionGraph/RevGraphFilterDlg.cpp b/src/TortoiseProc/RevisionGraph/RevGraphFilterDlg.cpp index 8e4a3fd71..fa04f4c0b 100644 --- a/src/TortoiseProc/RevisionGraph/RevGraphFilterDlg.cpp +++ b/src/TortoiseProc/RevisionGraph/RevGraphFilterDlg.cpp @@ -1,7 +1,7 @@ // TortoiseGit - a Windows shell extension for easy version control // Copyright (C) 2003-2006 - Stefan Kueng -// Copyright (C) 2012-2013 - TortoiseGit +// Copyright (C) 2012-2014 - TortoiseGit // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -31,6 +31,7 @@ CRevGraphFilterDlg::CRevGraphFilterDlg(CWnd* pParent /*=NULL*/) , m_sFromRev(_T("")) , m_sToRev(_T("")) , m_bCurrentBranch(FALSE) + , m_bLocalBranches(FALSE) { } @@ -45,6 +46,7 @@ void CRevGraphFilterDlg::DoDataExchange(CDataExchange* pDX) DDX_Text(pDX, IDC_FROMREV, m_sFromRev); DDX_Text(pDX, IDC_TOREV, m_sToRev); DDX_Check(pDX, IDC_CURRENT_BRANCH, m_bCurrentBranch); + DDX_Check(pDX, IDC_LOCAL_BRANCHES, m_bLocalBranches); DDX_Control(pDX, IDC_FROMREV, m_ctrlFromRev); DDX_Control(pDX, IDC_TOREV, m_ctrlToRev); } @@ -53,6 +55,8 @@ BEGIN_MESSAGE_MAP(CRevGraphFilterDlg, CDialog) ON_BN_CLICKED(IDC_REV1BTN1, &CRevGraphFilterDlg::OnBnClickedRev1btn1) ON_BN_CLICKED(IDC_REV1BTN2, &CRevGraphFilterDlg::OnBnClickedRev1btn2) ON_BN_CLICKED(IDC_RESETFILTER, &CRevGraphFilterDlg::OnBnClickedResetfilter) + ON_BN_CLICKED(IDC_CURRENT_BRANCH, &CRevGraphFilterDlg::OnBnClickedCurrentBranch) + ON_BN_CLICKED(IDC_LOCAL_BRANCHES, &CRevGraphFilterDlg::OnBnClickedLocalBranches) END_MESSAGE_MAP() BOOL CRevGraphFilterDlg::OnInitDialog() @@ -100,6 +104,9 @@ BOOL CRevGraphFilterDlg::OnInitDialog() } } + OnBnClickedCurrentBranch(); + OnBnClickedLocalBranches(); + return TRUE; } @@ -144,6 +151,37 @@ void CRevGraphFilterDlg::OnBnClickedResetfilter() m_sFromRev.Empty(); m_sToRev.Empty(); m_bCurrentBranch = FALSE; + m_bLocalBranches = FALSE; UpdateData(FALSE); CDialog::OnOK(); } + +void CRevGraphFilterDlg::OnBnClickedCurrentBranch() +{ + UpdateData(); + if (m_bCurrentBranch) + { + m_bLocalBranches = FALSE; + GetDlgItem(IDC_LOCAL_BRANCHES)->EnableWindow(FALSE); + UpdateData(FALSE); + } + else + { + GetDlgItem(IDC_LOCAL_BRANCHES)->EnableWindow(TRUE); + } +} + +void CRevGraphFilterDlg::OnBnClickedLocalBranches() +{ + UpdateData(); + if (m_bLocalBranches) + { + m_bCurrentBranch = FALSE; + GetDlgItem(IDC_CURRENT_BRANCH)->EnableWindow(FALSE); + UpdateData(FALSE); + } + else + { + GetDlgItem(IDC_CURRENT_BRANCH)->EnableWindow(TRUE); + } +} diff --git a/src/TortoiseProc/RevisionGraph/RevGraphFilterDlg.h b/src/TortoiseProc/RevisionGraph/RevGraphFilterDlg.h index 49cb4fba2..cdb493560 100644 --- a/src/TortoiseProc/RevisionGraph/RevGraphFilterDlg.h +++ b/src/TortoiseProc/RevisionGraph/RevGraphFilterDlg.h @@ -1,7 +1,7 @@ // TortoiseGit - a Windows shell extension for easy version control // Copyright (C) 2003-2006 - Stefan Kueng -// Copyright (C) 2012 - TortoiseGit +// Copyright (C) 2012, 2014 - TortoiseGit // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -40,10 +40,13 @@ public: enum { IDD = IDD_REVGRAPHFILTER }; BOOL m_bCurrentBranch; + BOOL m_bLocalBranches; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support afx_msg void OnBnClickedResetfilter(); + afx_msg void OnBnClickedCurrentBranch(); + afx_msg void OnBnClickedLocalBranches(); virtual BOOL OnInitDialog(); virtual void OnOK(); diff --git a/src/TortoiseProc/RevisionGraph/RevisionGraphDlg.cpp b/src/TortoiseProc/RevisionGraph/RevisionGraphDlg.cpp index 3c695d5ff..37d6a00ad 100644 --- a/src/TortoiseProc/RevisionGraph/RevisionGraphDlg.cpp +++ b/src/TortoiseProc/RevisionGraph/RevisionGraphDlg.cpp @@ -797,6 +797,7 @@ void CRevisionGraphDlg::OnViewFilter() CRevGraphFilterDlg dlg; dlg.m_bCurrentBranch = this->m_Graph.m_bCurrentBranch; + dlg.m_bLocalBranches = m_Graph.m_bLocalBranches; dlg.SetRevisionRange(m_Graph.m_FromRev, m_Graph.m_ToRev); if (dlg.DoModal()==IDOK) @@ -809,10 +810,11 @@ void CRevisionGraphDlg::OnViewFilter() // update menu & toolbar this->m_Graph.m_bCurrentBranch = dlg.m_bCurrentBranch; + m_Graph.m_bLocalBranches = dlg.m_bLocalBranches; CMenu * pMenu = GetMenu(); int tbstate = m_ToolBar.GetToolBarCtrl().GetState(ID_VIEW_FILTER); - if (m_Graph.m_bCurrentBranch || !m_Graph.m_FromRev.IsEmpty() || !m_Graph.m_ToRev.IsEmpty()) + if (m_Graph.m_bCurrentBranch || m_Graph.m_bLocalBranches || !m_Graph.m_FromRev.IsEmpty() || !m_Graph.m_ToRev.IsEmpty()) { if (pMenu != NULL) pMenu->CheckMenuItem(ID_VIEW_FILTER, MF_BYCOMMAND | MF_CHECKED); diff --git a/src/TortoiseProc/RevisionGraph/RevisionGraphDlgFunc.cpp b/src/TortoiseProc/RevisionGraph/RevisionGraphDlgFunc.cpp index 937fd34b9..912bb9a0e 100644 --- a/src/TortoiseProc/RevisionGraph/RevisionGraphDlgFunc.cpp +++ b/src/TortoiseProc/RevisionGraph/RevisionGraphDlgFunc.cpp @@ -211,7 +211,8 @@ bool CRevisionGraphWnd::FetchRevisionData range = m_ToRev; else if (!m_FromRev.IsEmpty()) range = m_FromRev; - this->m_logEntries.ParserFromLog(nullptr, -1, CGit::LOG_INFO_SIMPILFY_BY_DECORATION|(this->m_bCurrentBranch? 0: CGit::LOG_INFO_ALL_BRANCH), &range); + int infomask = CGit::LOG_INFO_SIMPILFY_BY_DECORATION | (m_bCurrentBranch ? 0 : m_bLocalBranches ? CGit::LOG_INFO_LOCAL_BRANCHES : CGit::LOG_INFO_ALL_BRANCH); + this->m_logEntries.ParserFromLog(nullptr, -1, infomask, &range); ReloadHashMap(); this->m_Graph.clear(); diff --git a/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.cpp b/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.cpp index 24fd790cc..94513761b 100644 --- a/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.cpp +++ b/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.cpp @@ -107,6 +107,7 @@ CRevisionGraphWnd::CRevisionGraphWnd() , m_dwTicks(0) , m_logEntries(&m_LogCache) , m_bCurrentBranch(false) + , m_bLocalBranches(FALSE) { memset(&m_lfBaseFont, 0, sizeof(LOGFONT)); std::fill_n(m_apFonts, MAXFONTS, (CFont*)NULL); diff --git a/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.h b/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.h index a314292f1..62b67a263 100644 --- a/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.h +++ b/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.h @@ -152,6 +152,7 @@ public: CGitHash m_HeadHash; BOOL m_bCurrentBranch; + BOOL m_bLocalBranches; CString m_FromRev; CString m_ToRev; diff --git a/src/TortoiseProc/resource.h b/src/TortoiseProc/resource.h index e059a80b2..f53ab4b99 100644 --- a/src/TortoiseProc/resource.h +++ b/src/TortoiseProc/resource.h @@ -1155,6 +1155,7 @@ #define IDC_BUTTON_REF 1542 #define IDC_REGEDT 1542 #define IDC_LOCAL_BRANCH 1543 +#define IDC_LOCAL_BRANCHES 1543 #define IDC_COLOR_LINE5 1544 #define IDC_COLOR_LINE6 1545 #define IDC_COLOR_LINE1 1546 -- 2.11.4.GIT