Signed-off-by: Frank Li <lznuaa@gmail.com>
m_pProgDlg(NULL),\r
m_bCancelled(false)\r
{\r
m_pProgDlg(NULL),\r
m_bCancelled(false)\r
{\r
}\r
\r
CFileDiffDlg::~CFileDiffDlg()\r
}\r
\r
CFileDiffDlg::~CFileDiffDlg()\r
ON_WM_TIMER()\r
ON_EN_CHANGE(IDC_REV1EDIT, &CFileDiffDlg::OnEnChangeRev1edit)\r
ON_EN_CHANGE(IDC_REV2EDIT, &CFileDiffDlg::OnEnChangeRev2edit)\r
ON_WM_TIMER()\r
ON_EN_CHANGE(IDC_REV1EDIT, &CFileDiffDlg::OnEnChangeRev1edit)\r
ON_EN_CHANGE(IDC_REV2EDIT, &CFileDiffDlg::OnEnChangeRev2edit)\r
+ ON_MESSAGE(MSG_REF_LOADED, OnRefLoad)\r
END_MESSAGE_MAP()\r
\r
\r
END_MESSAGE_MAP()\r
\r
\r
CMessageBox::Show(NULL, IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR);\r
}\r
\r
CMessageBox::Show(NULL, IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR);\r
}\r
\r
+ InterlockedExchange(&m_bLoadingRef, TRUE);\r
+ if (AfxBeginThread(LoadRefThreadEntry, this)==NULL)\r
+ {\r
+ InterlockedExchange(&m_bLoadingRef, FALSE);\r
+ CMessageBox::Show(NULL, IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR);\r
+ }\r
+\r
+\r
this->m_cRev1Btn.AddEntry(_T("RefBrowse"));\r
this->m_cRev1Btn.AddEntry(_T("Log"));\r
this->m_cRev1Btn.AddEntry(_T("RefLog"));\r
this->m_cRev1Btn.AddEntry(_T("RefBrowse"));\r
this->m_cRev1Btn.AddEntry(_T("Log"));\r
this->m_cRev1Btn.AddEntry(_T("RefLog"));\r
this->m_cRev2Btn.EnableWindow(b);\r
m_cFilter.EnableWindow(b);\r
m_SwitchButton.EnableWindow(b);\r
this->m_cRev2Btn.EnableWindow(b);\r
m_cFilter.EnableWindow(b);\r
m_SwitchButton.EnableWindow(b);\r
}\r
\r
void CFileDiffDlg::DoDiff(int selIndex, bool blame)\r
}\r
\r
void CFileDiffDlg::DoDiff(int selIndex, bool blame)\r
+UINT CFileDiffDlg::LoadRefThread()\r
+{\r
+ g_Git.GetBranchList(m_Reflist,NULL,CGit::BRANCH_ALL);\r
+ g_Git.GetTagList(m_Reflist);\r
+\r
+ this->PostMessage(MSG_REF_LOADED);\r
+ InterlockedExchange(&m_bLoadingRef, FALSE);\r
+ return 0;\r
+}\r
+\r
void CFileDiffDlg::OnContextMenu(CWnd* pWnd, CPoint point)\r
{\r
if ((pWnd==0)||(pWnd != &m_cFileList))\r
void CFileDiffDlg::OnContextMenu(CWnd* pWnd, CPoint point)\r
{\r
if ((pWnd==0)||(pWnd != &m_cFileList))\r
\r
// TODO: Add your control notification handler code here\r
}\r
\r
// TODO: Add your control notification handler code here\r
}\r
+\r
+LRESULT CFileDiffDlg::OnRefLoad(WPARAM wParam, LPARAM lParam)\r
+{\r
+ for(int i=0;i<m_Reflist.size();i++)\r
+ {\r
+ CString str=m_Reflist[i];\r
+ \r
+ if(str.Find(_T("remotes/")) == 0)\r
+ str=str.Mid(8);\r
+\r
+ m_ctrRev1Edit.AddSearchString(str);\r
+ m_ctrRev2Edit.AddSearchString(str);\r
+ }\r
+ return 0;\r
+}\r
* repository. It shows a list of files/folders which were changed in those\r
* two revisions.\r
*/\r
* repository. It shows a list of files/folders which were changed in those\r
* two revisions.\r
*/\r
+#define MSG_REF_LOADED (WM_USER+120)\r
+\r
class CFileDiffDlg : public CResizableStandAloneDialog\r
{\r
DECLARE_DYNAMIC(CFileDiffDlg)\r
class CFileDiffDlg : public CResizableStandAloneDialog\r
{\r
DECLARE_DYNAMIC(CFileDiffDlg)\r
virtual void OnCancel();\r
virtual BOOL OnInitDialog();\r
virtual BOOL PreTranslateMessage(MSG* pMsg);\r
virtual void OnCancel();\r
virtual BOOL OnInitDialog();\r
virtual BOOL PreTranslateMessage(MSG* pMsg);\r
+ afx_msg LRESULT OnRefLoad(WPARAM wParam, LPARAM lParam);\r
afx_msg void OnNMDblclkFilelist(NMHDR *pNMHDR, LRESULT *pResult);\r
afx_msg void OnLvnGetInfoTipFilelist(NMHDR *pNMHDR, LRESULT *pResult);\r
afx_msg void OnNMCustomdrawFilelist(NMHDR *pNMHDR, LRESULT *pResult);\r
afx_msg void OnNMDblclkFilelist(NMHDR *pNMHDR, LRESULT *pResult);\r
afx_msg void OnLvnGetInfoTipFilelist(NMHDR *pNMHDR, LRESULT *pResult);\r
afx_msg void OnNMCustomdrawFilelist(NMHDR *pNMHDR, LRESULT *pResult);\r
static UINT ExportThreadEntry(LPVOID pVoid);\r
UINT ExportThread();\r
\r
static UINT ExportThreadEntry(LPVOID pVoid);\r
UINT ExportThread();\r
\r
+ static UINT LoadRefThreadEntry(LPVOID pVoid)\r
+ {\r
+ return ((CFileDiffDlg *)pVoid)->LoadRefThread();\r
+ };\r
+\r
+ UINT LoadRefThread();\r
+\r
+ STRING_VECTOR m_Reflist;\r
+\r
virtual BOOL Cancel() {return m_bCancelled;}\r
\r
CToolTips m_tooltips;\r
virtual BOOL Cancel() {return m_bCancelled;}\r
\r
CToolTips m_tooltips;\r
bool m_bDoPegDiff;\r
volatile LONG m_bThreadRunning;\r
\r
bool m_bDoPegDiff;\r
volatile LONG m_bThreadRunning;\r
\r
+ volatile LONG m_bLoadingRef;\r
+\r
bool m_bCancelled;\r
\r
void Sort();\r
bool m_bCancelled;\r
\r
void Sort();\r