示例#1
0
CString CCommitProgressDlg::Convert2UnionCode(char *buff, int size)
{
	CString str;

	CString cmd, output;
	int cp=CP_UTF8;

	cmd=_T("git.exe config i18n.logOutputEncoding");
	if (m_Git->Run(cmd, &output, NULL, CP_UTF8))
		cp=CP_UTF8;

	int start=0;
	output=output.Tokenize(_T("\n"),start);
	cp=CUnicodeUtils::GetCPCode(output);

	start =0;
	if(size == -1)
		size = (int)strlen(buff);

	for (int i = 0; i < size; ++i)
	{
		if(buff[i] == ']')
			start = i;
		if( start >0 && buff[i] =='\n' )
		{
			start =i;
			break;
		}
	}

	str.Empty();
	g_Git.StringAppend(&str, (BYTE*)buff, cp, start);
	g_Git.StringAppend(&str, (BYTE*)buff + start, CP_UTF8, size - start);

	ClearESC(str);

	return str;
}
示例#2
0
void CProgressDlg::ParserCmdOutput(CRichEditCtrl &log,CProgressCtrl &progressctrl,HWND m_hWnd,CComPtr<ITaskbarList3> m_pTaskbarList,CStringA &oneline, char ch, CWnd *CurrentWork)
{
	//TRACE(_T("%c"),ch);
	if( ch == ('\r') || ch == ('\n'))
	{
		CString str;

//		TRACE(_T("End Char %s \r\n"),ch==_T('\r')?_T("lf"):_T(""));
//		TRACE(_T("End Char %s \r\n"),ch==_T('\n')?_T("cr"):_T(""));

		if(ClearESC(oneline))
		{
			ch = ('\r');
		}

		int lines = log.GetLineCount();
		g_Git.StringAppend(&str,(BYTE*)oneline.GetBuffer(),CP_ACP);
		str.Trim();
//		TRACE(_T("%s"), str);

		if(ch == ('\r'))
		{
			int start=log.LineIndex(lines-1);
			log.SetSel(start, log.GetTextLength());
			log.ReplaceSel(str);
		}
		else
		{
			int length = log.GetWindowTextLength();
			log.SetSel(length, length);
			if (length > 0)
				log.ReplaceSel(_T("\r\n") + str);
			else
				log.ReplaceSel(str);
		}

		if (lines > 500) //limited log length
		{
			int end=log.LineIndex(1);
			log.SetSel(0,end);
			log.ReplaceSel(_T(""));
		}
		log.LineScroll(log.GetLineCount() - log.GetFirstVisibleLine() - 4);

		int s1=oneline.ReverseFind(_T(':'));
		int s2=oneline.Find(_T('%'));
		if (s1 > 0 && s2 > 0)
		{
			if(CurrentWork)
				CurrentWork->SetWindowTextW(str.Left(s1));

			int pos=FindPercentage(str);
			TRACE(_T("Pos %d\r\n"),pos);
			if(pos>0)
			{
				progressctrl.SetPos(pos);
				if (m_pTaskbarList)
				{
					m_pTaskbarList->SetProgressState(m_hWnd, TBPF_NORMAL);
					m_pTaskbarList->SetProgressValue(m_hWnd, pos, 100);
				}
			}
		}

		oneline="";

	}
	else
	{
		oneline+=ch;
	}
}