From 28b0c304b0ab86373dc423c7e07a978387e86f74 Mon Sep 17 00:00:00 2001 From: Johan 't Hart Date: Fri, 5 Jun 2009 00:36:04 +0200 Subject: [PATCH] ProgressDlg: Changed 'OK' into 'Close' and 'Cancel' into 'Abort' Abort breaks the commands loop. Also made it possible to change the 'Abort' text when command(s) completed. --- src/Resources/TortoiseProcENG.rc | Bin 430374 -> 430334 bytes src/TortoiseProc/ProgressDlg.cpp | 22 ++++++++++++++++++---- src/TortoiseProc/ProgressDlg.h | 5 +++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/Resources/TortoiseProcENG.rc b/src/Resources/TortoiseProcENG.rc index 666eb9373105b0ff1c484f2976d75dc029a2cd72..3f1cdc1a30e81c7462220904c5f64bda55f8e96d 100644 GIT binary patch delta 133 zcmZ3sNb280sSW35Pk&~~EHv5R1kYr?2^xY53^fc23q=t01GcEcK`qY delta 74 zcmeyjP-@vCsSW35PcKPgvYLK^l}T-KT&~1)J2pnWW}P|hI&&De>&#*5-G%9&!Kx diff --git a/src/TortoiseProc/ProgressDlg.cpp b/src/TortoiseProc/ProgressDlg.cpp index 0335b44..ce8ff32 100644 --- a/src/TortoiseProc/ProgressDlg.cpp +++ b/src/TortoiseProc/ProgressDlg.cpp @@ -11,7 +11,7 @@ IMPLEMENT_DYNAMIC(CProgressDlg, CResizableStandAloneDialog) CProgressDlg::CProgressDlg(CWnd* pParent /*=NULL*/) - : CResizableStandAloneDialog(CProgressDlg::IDD, pParent), m_bShowCommand(true), m_bAutoCloseOnSuccess(false) + : CResizableStandAloneDialog(CProgressDlg::IDD, pParent), m_bShowCommand(true), m_bAutoCloseOnSuccess(false), m_bAbort(false) { } @@ -131,7 +131,7 @@ UINT CProgressDlg::ProgressThread() WaitForSingleObject(pi.hProcess, INFINITE); DWORD status=0; - if(!GetExitCodeProcess(pi.hProcess,&status)) + if(!GetExitCodeProcess(pi.hProcess,&status) || m_bAbort) { CloseHandle(pi.hProcess); @@ -164,8 +164,17 @@ LRESULT CProgressDlg::OnProgressUpdateUI(WPARAM wParam,LPARAM lParam) m_Animate.Stop(); m_Progress.SetPos(100); this->DialogEnableWindow(IDOK,TRUE); - if(m_bAutoCloseOnSuccess && wParam == MSG_PROGRESSDLG_END) - EndDialog(IDOK); + if(wParam == MSG_PROGRESSDLG_END) + { + if(m_bAutoCloseOnSuccess) + EndDialog(IDOK); + if(m_changeAbortButtonOnSuccessTo.IsEmpty()) + { + GetDlgItem(IDCANCEL)->SetWindowText(m_changeAbortButtonOnSuccessTo); + } + } + else + DialogEnableWindow(IDCANCEL, FALSE); } if(lParam != 0) @@ -244,3 +253,8 @@ void CProgressDlg::OnBnClickedOk() m_Log.GetWindowText(this->m_LogText); OnOK(); } + +void CProgressDlg::OnCancel() +{ + m_bAbort = true; +} diff --git a/src/TortoiseProc/ProgressDlg.h b/src/TortoiseProc/ProgressDlg.h index d07aae3..1a7456f 100644 --- a/src/TortoiseProc/ProgressDlg.h +++ b/src/TortoiseProc/ProgressDlg.h @@ -22,6 +22,7 @@ public: CString m_GitCmd; std::vector m_GitCmdList; bool m_bAutoCloseOnSuccess; + CString m_changeAbortButtonOnSuccessTo; CString m_LogFile; @@ -37,6 +38,8 @@ public: BOOL m_bShowCommand; // whether to display the command in the log window (default true) CString m_PreText; // optional text to show in log window before running command CString m_LogText; + + bool m_bAbort; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support static UINT ProgressThreadEntry(LPVOID pVoid); @@ -48,6 +51,8 @@ protected: LRESULT CProgressDlg::OnProgressUpdateUI(WPARAM wParam,LPARAM lParam); + void OnCancel(); + DECLARE_MESSAGE_MAP() public: -- 2.11.0