1 // TortoiseGit - a Windows shell extension for easy version control
\r
3 // Copyright (C) 2003-2008 - TortoiseGit
\r
5 // This program is free software; you can redistribute it and/or
\r
6 // modify it under the terms of the GNU General Public License
\r
7 // as published by the Free Software Foundation; either version 2
\r
8 // of the License, or (at your option) any later version.
\r
10 // This program is distributed in the hope that it will be useful,
\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
13 // GNU General Public License for more details.
\r
15 // You should have received a copy of the GNU General Public License
\r
16 // along with this program; if not, write to the Free Software Foundation,
\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
\r
21 #include "StandAloneDlg.h"
\r
23 #include "TGitPath.h"
\r
24 //#include "Blame.h"
\r
26 #include "HintListCtrl.h"
\r
28 #include "XPImageButton.h"
\r
29 #include "FilterEdit.h"
\r
30 #include "Tooltip.h"
\r
33 #define IDT_FILTER 101
\r
36 * \ingroup TortoiseProc
\r
37 * Dialog which fetches and shows the difference between two urls in the
\r
38 * repository. It shows a list of files/folders which were changed in those
\r
41 class CFileDiffDlg : public CResizableStandAloneDialog
\r
43 DECLARE_DYNAMIC(CFileDiffDlg)
\r
49 // svn_client_diff_summarize_kind_t kind;
\r
51 // svn_node_kind_t node;
\r
55 CFileDiffDlg(CWnd* pParent = NULL);
\r
56 virtual ~CFileDiffDlg();
\r
58 // void SetDiff(const CTGitPath& path1, GitRev rev1, const CTGitPath& path2, GitRev rev2, svn_depth_t depth, bool ignoreancestry);
\r
59 // void SetDiff(const CTGitPath& path, GitRev peg, GitRev rev1, GitRev rev2, svn_depth_t depth, bool ignoreancestry);
\r
61 void SetDiff(CTGitPath * path, GitRev rev1,GitRev rev2);
\r
62 void SetDiff(CTGitPath * path, GitRev rev1);
\r
63 void SetDiff(CTGitPath * path, CString &hash1, CString &hash2);
\r
65 void DoBlame(bool blame = true) {m_bBlame = blame;}
\r
67 enum { IDD = IDD_DIFFFILES };
\r
70 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
\r
71 virtual void OnCancel();
\r
72 virtual BOOL OnInitDialog();
\r
73 virtual BOOL PreTranslateMessage(MSG* pMsg);
\r
74 afx_msg void OnNMDblclkFilelist(NMHDR *pNMHDR, LRESULT *pResult);
\r
75 afx_msg void OnLvnGetInfoTipFilelist(NMHDR *pNMHDR, LRESULT *pResult);
\r
76 afx_msg void OnNMCustomdrawFilelist(NMHDR *pNMHDR, LRESULT *pResult);
\r
77 afx_msg void OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/);
\r
78 afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
\r
79 afx_msg void OnEnSetfocusSecondurl();
\r
80 afx_msg void OnEnSetfocusFirsturl();
\r
81 afx_msg void OnBnClickedSwitchleftright();
\r
82 afx_msg void OnHdnItemclickFilelist(NMHDR *pNMHDR, LRESULT *pResult);
\r
83 afx_msg void OnBnClickedRev1btn();
\r
84 afx_msg void OnBnClickedRev2btn();
\r
85 afx_msg LRESULT OnClickedCancelFilter(WPARAM wParam, LPARAM lParam);
\r
86 afx_msg void OnEnChangeFilter();
\r
87 afx_msg void OnTimer(UINT_PTR nIDEvent);
\r
89 DECLARE_MESSAGE_MAP()
\r
91 // virtual svn_error_t* DiffSummarizeCallback(const CTGitPath& path,
\r
92 // svn_client_diff_summarize_kind_t kind,
\r
93 // bool propchanged,
\r
94 // svn_node_kind_t node);
\r
96 int AddEntry(const CTGitPath * fd);
\r
97 void DoDiff(int selIndex, bool blame);
\r
98 void DiffProps(int selIndex);
\r
99 void SetURLLabels();
\r
100 void Filter(CString sFilterText);
\r
101 void CopySelectionToClipboard();
\r
103 static UINT DiffThreadEntry(LPVOID pVoid);
\r
105 static UINT ExportThreadEntry(LPVOID pVoid);
\r
106 UINT ExportThread();
\r
108 virtual BOOL Cancel() {return m_bCancelled;}
\r
110 CToolTips m_tooltips;
\r
112 CButton m_cRev1Btn;
\r
113 CButton m_cRev2Btn;
\r
114 CFilterEdit m_cFilter;
\r
116 CXPImageButton m_SwitchButton;
\r
117 HICON m_hSwitchIcon;
\r
119 CHintListCtrl m_cFileList;
\r
121 // CBlame m_blamer;
\r
122 CTGitPathList m_arFileList;
\r
123 std::vector<CTGitPath*> m_arFilteredList;
\r
124 CArray<CTGitPath*, CTGitPath*> m_arSelectedFileList;
\r
126 CString m_strExportDir;
\r
127 CProgressDlg * m_pProgDlg;
\r
137 bool m_bIgnoreancestry;
\r
139 volatile LONG m_bThreadRunning;
\r
144 // static bool SortCompare(const FileDiff& Data1, const FileDiff& Data2);
\r
146 static BOOL m_bAscending;
\r
147 static int m_nSortedColumn;
\r