OSDN Git Service

Export Progress Dialog Okay
authorFrank Li <lznuaa@gmail.com>
Sun, 28 Dec 2008 13:27:38 +0000 (21:27 +0800)
committerFrank Li <lznuaa@gmail.com>
Sun, 28 Dec 2008 13:27:38 +0000 (21:27 +0800)
src/Git/Git.cpp
src/Git/Git.h
src/TortoiseProc/AppUtils.cpp
src/TortoiseProc/ProgressDlg.cpp
src/TortoiseProc/ProgressDlg.h

index 08f2f27..481079d 100644 (file)
@@ -15,10 +15,11 @@ CGit::~CGit(void)
 }\r
 \r
 char buffer[4096];\r
-int CGit::RunAsync(CString cmd,PROCESS_INFORMATION *piOut,HANDLE *hReadOut)\r
+int CGit::RunAsync(CString cmd,PROCESS_INFORMATION *piOut,HANDLE *hReadOut,CString *StdioFile)\r
 {\r
        SECURITY_ATTRIBUTES sa;\r
        HANDLE hRead, hWrite;\r
+       HANDLE hStdioFile;\r
 \r
        sa.nLength = sizeof(SECURITY_ATTRIBUTES);\r
        sa.lpSecurityDescriptor=NULL;\r
@@ -28,13 +29,23 @@ int CGit::RunAsync(CString cmd,PROCESS_INFORMATION *piOut,HANDLE *hReadOut)
                return GIT_ERROR_OPEN_PIP;\r
        }\r
        \r
+       if(StdioFile)\r
+       {\r
+               hStdioFile=CreateFile(*StdioFile,GENERIC_WRITE,FILE_SHARE_READ   |   FILE_SHARE_WRITE,   \r
+                       &sa,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);  \r
+       }\r
+\r
        STARTUPINFO si;\r
        PROCESS_INFORMATION pi;\r
        si.cb=sizeof(STARTUPINFO);\r
        GetStartupInfo(&si);\r
 \r
        si.hStdError=hWrite;\r
-       si.hStdOutput=hWrite;\r
+       if(StdioFile)\r
+               si.hStdOutput=hStdioFile;\r
+       else\r
+               si.hStdOutput=hWrite;\r
+\r
        si.wShowWindow=SW_HIDE;\r
        si.dwFlags=STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;\r
 \r
index be3aa97..d318dd2 100644 (file)
@@ -22,7 +22,7 @@ public:
        CGit(void);\r
        ~CGit(void);\r
        int Run(CString cmd, CString* output);\r
-       int RunAsync(CString cmd,PROCESS_INFORMATION *pi, HANDLE* hRead);\r
+       int RunAsync(CString cmd,PROCESS_INFORMATION *pi, HANDLE* hRead, CString *StdioFile=NULL);\r
        int RunLogFile(CString cmd, CString &filename);\r
        CString GetUserName(void);\r
        CString GetUserEmail(void);\r
index 362a7af..1fba776 100644 (file)
@@ -1088,13 +1088,14 @@ bool CAppUtils::Export(CString *BashHash)
        if (dlg.DoModal() == IDOK)\r
        {\r
                CString cmd;\r
-               cmd.Format(_T("git.exe archive --format=zip %s"),\r
+               cmd.Format(_T("git.exe archive --format=zip --verbose %s"),\r
                                        dlg.m_VersionName);\r
 \r
-               g_Git.RunLogFile(cmd,dlg.m_strExportDirectory);\r
-               //CProgressDlg pro;\r
-               //pro.m_GitCmd=cmd;\r
-               //pro.DoModal();\r
+               //g_Git.RunLogFile(cmd,dlg.m_strExportDirectory);\r
+               CProgressDlg pro;\r
+               pro.m_GitCmd=cmd;\r
+               pro.m_LogFile=dlg.m_strExportDirectory;\r
+               pro.DoModal();\r
                return TRUE;\r
        }\r
        return bRet;\r
index c18d456..d7f3efe 100644 (file)
@@ -78,7 +78,13 @@ UINT CProgressDlg::ProgressThread()
 \r
        m_Animate.Play(0,-1,-1);\r
 \r
-       g_Git.RunAsync(this->m_GitCmd,&pi, &hRead);\r
+       CString *pfilename;\r
+       if(m_LogFile.IsEmpty())\r
+               pfilename=NULL;\r
+       else\r
+               pfilename=&m_LogFile;\r
+\r
+       g_Git.RunAsync(this->m_GitCmd,&pi, &hRead,pfilename);\r
        this->DialogEnableWindow(IDOK,FALSE);\r
 \r
        DWORD readnumber;\r
@@ -145,6 +151,8 @@ void CProgressDlg::ParserCmdOutput(TCHAR ch)
                text+=_T("\r\n")+m_LogText;\r
                m_Log.SetWindowTextW(text);\r
                \r
+               m_Log.LineScroll(m_Log.GetLineCount());\r
+\r
                int s1=m_LogText.Find(_T(':'));\r
                int s2=m_LogText.Find(_T('%'));\r
                if(s1>0 && s2>0)\r
index 182afa5..e2c0f0d 100644 (file)
@@ -15,6 +15,8 @@ public:
 // Dialog Data\r
        enum { IDD = IDD_GITPROGRESS };\r
        CString m_GitCmd;\r
+       CString m_LogFile;\r
+\r
        CProgressCtrl m_Progress;\r
        \r
        CEdit             m_Log;\r