+\r
+UINT CSyncDlg::ProgressThread()\r
+{\r
+ m_GitCmdStatus=CProgressDlg::RunCmdList(this,m_GitCmdList,true,NULL,&this->m_bAbort);\r
+ return 0;\r
+}\r
+\r
+\r
+LRESULT CSyncDlg::OnProgressUpdateUI(WPARAM wParam,LPARAM lParam)\r
+{\r
+ if(wParam == MSG_PROGRESSDLG_END || wParam == MSG_PROGRESSDLG_FAILED)\r
+ {\r
+ //m_bDone = true;\r
+ m_ctrlAnimate.Stop();\r
+ m_ctrlProgress.SetPos(100);\r
+ //this->DialogEnableWindow(IDOK,TRUE);\r
+\r
+ if(wParam == MSG_PROGRESSDLG_END)\r
+ {\r
+ EnableControlButton(true);\r
+ SwitchToInput();\r
+ }\r
+ }\r
+\r
+ if(lParam != 0)\r
+ ParserCmdOutput((TCHAR)lParam);\r
+\r
+ return 0;\r
+}\r
+\r
+void CSyncDlg::ParserCmdOutput(TCHAR ch)\r
+{\r
+ TRACE(_T("%c"),ch);\r
+ if( ch == _T('\r') || ch == _T('\n'))\r
+ {\r
+ TRACE(_T("End Char %s \r\n"),ch==_T('\r')?_T("lf"):_T(""));\r
+ TRACE(_T("End Char %s \r\n"),ch==_T('\n')?_T("cr"):_T(""));\r
+\r
+ int linenum = this->m_ctrlCmdOut.GetLineCount();\r
+ int index = this->m_ctrlCmdOut.LineIndex(linenum-1);\r
+ if(linenum == 0)\r
+ index = 0;\r
+\r
+ this->m_ctrlCmdOut.SetSel(index,-1);\r
+ \r
+ this->m_ctrlCmdOut.ReplaceSel(m_LogText);\r
+ \r
+ this->m_ctrlCmdOut.LineScroll(linenum-1);\r
+ \r
+ int s1=m_LogText.Find(_T(':'));\r
+ int s2=m_LogText.Find(_T('%'));\r
+ if(s1>0 && s2>0)\r
+ {\r
+ // this->m_CurrentWork.SetWindowTextW(m_LogText.Left(s1));\r
+ int pos=CProgressDlg::FindPercentage(m_LogText);\r
+ TRACE(_T("Pos %d\r\n"),pos);\r
+ if(pos>0)\r
+ this->m_ctrlProgress.SetPos(pos);\r
+ }\r
+\r
+ m_LogText=_T("");\r
+\r
+ }else\r
+ {\r
+ m_LogText+=ch;\r
+ }\r
+}
\ No newline at end of file