OSDN Git Service

ProgressDlg: Changed 'OK' into 'Close' and 'Cancel' into 'Abort'
authorJohan 't Hart <johanthart@gmail.com>
Thu, 4 Jun 2009 22:36:04 +0000 (00:36 +0200)
committerJohan 't Hart <johanthart@gmail.com>
Thu, 4 Jun 2009 22:36:04 +0000 (00:36 +0200)
Abort breaks the commands loop.
Also made it possible to change the 'Abort' text when command(s) completed.

src/Resources/TortoiseProcENG.rc
src/TortoiseProc/ProgressDlg.cpp
src/TortoiseProc/ProgressDlg.h

index 666eb93..3f1cdc1 100644 (file)
Binary files a/src/Resources/TortoiseProcENG.rc and b/src/Resources/TortoiseProcENG.rc differ
index 0335b44..ce8ff32 100644 (file)
@@ -11,7 +11,7 @@
 IMPLEMENT_DYNAMIC(CProgressDlg, CResizableStandAloneDialog)\r
 \r
 CProgressDlg::CProgressDlg(CWnd* pParent /*=NULL*/)\r
-       : CResizableStandAloneDialog(CProgressDlg::IDD, pParent), m_bShowCommand(true), m_bAutoCloseOnSuccess(false)\r
+       : CResizableStandAloneDialog(CProgressDlg::IDD, pParent), m_bShowCommand(true), m_bAutoCloseOnSuccess(false), m_bAbort(false)\r
 {\r
 \r
 }\r
@@ -131,7 +131,7 @@ UINT CProgressDlg::ProgressThread()
                WaitForSingleObject(pi.hProcess, INFINITE);\r
                \r
                DWORD status=0;\r
-               if(!GetExitCodeProcess(pi.hProcess,&status))\r
+               if(!GetExitCodeProcess(pi.hProcess,&status) || m_bAbort)\r
                {\r
                        CloseHandle(pi.hProcess);\r
 \r
@@ -164,8 +164,17 @@ LRESULT CProgressDlg::OnProgressUpdateUI(WPARAM wParam,LPARAM lParam)
                m_Animate.Stop();\r
                m_Progress.SetPos(100);\r
                this->DialogEnableWindow(IDOK,TRUE);\r
-               if(m_bAutoCloseOnSuccess && wParam == MSG_PROGRESSDLG_END)\r
-                       EndDialog(IDOK);\r
+               if(wParam == MSG_PROGRESSDLG_END)\r
+               {\r
+                       if(m_bAutoCloseOnSuccess)\r
+                               EndDialog(IDOK);\r
+                       if(m_changeAbortButtonOnSuccessTo.IsEmpty())\r
+                       {\r
+                               GetDlgItem(IDCANCEL)->SetWindowText(m_changeAbortButtonOnSuccessTo);\r
+                       }\r
+               }\r
+               else\r
+                       DialogEnableWindow(IDCANCEL, FALSE);\r
        }\r
 \r
        if(lParam != 0)\r
@@ -244,3 +253,8 @@ void CProgressDlg::OnBnClickedOk()
        m_Log.GetWindowText(this->m_LogText);\r
        OnOK();\r
 }\r
+\r
+void CProgressDlg::OnCancel()\r
+{\r
+       m_bAbort = true;\r
+}\r
index d07aae3..1a7456f 100644 (file)
@@ -22,6 +22,7 @@ public:
        CString m_GitCmd;\r
        std::vector<CString> m_GitCmdList;\r
        bool m_bAutoCloseOnSuccess;\r
+       CString m_changeAbortButtonOnSuccessTo;\r
 \r
        CString m_LogFile;\r
 \r
@@ -37,6 +38,8 @@ public:
        BOOL              m_bShowCommand;       // whether to display the command in the log window (default true)\r
        CString           m_PreText;            // optional text to show in log window before running command\r
        CString           m_LogText;\r
+\r
+       bool                    m_bAbort;\r
 protected:\r
        virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support\r
        static UINT ProgressThreadEntry(LPVOID pVoid);\r
@@ -48,6 +51,8 @@ protected:
 \r
        LRESULT CProgressDlg::OnProgressUpdateUI(WPARAM wParam,LPARAM lParam);\r
 \r
+       void            OnCancel();\r
+\r
        \r
        DECLARE_MESSAGE_MAP()\r
 public:\r