本文整理汇总了C++中CSysProgressDlg::SetShowProgressBar方法的典型用法代码示例。如果您正苦于以下问题:C++ CSysProgressDlg::SetShowProgressBar方法的具体用法?C++ CSysProgressDlg::SetShowProgressBar怎么用?C++ CSysProgressDlg::SetShowProgressBar使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CSysProgressDlg
的用法示例。
在下文中一共展示了CSysProgressDlg::SetShowProgressBar方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PatchAll
void CFilePatchesDlg::PatchAll()
{
if (m_pCallBack)
{
CSysProgressDlg progDlg;
progDlg.SetTitle(IDR_MAINFRAME);
progDlg.SetShowProgressBar(true);
progDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_PATCH_ALL)));
progDlg.ShowModeless(m_hWnd);
for (int i=0; i<m_arFileStates.GetCount() && !progDlg.HasUserCancelled(); i++)
{
if (m_arFileStates.GetAt(i) == FPDLG_FILESTATE_ERROR)
MessageBox(m_pPatch->GetPatchRejects(i), NULL, MB_ICONERROR);
else if (m_arFileStates.GetAt(i) != FPDLG_FILESTATE_PATCHED)
{
progDlg.SetLine(2, GetFullPath(i), true);
m_pCallBack->PatchFile(m_pPatch->GetStrippedPath(i), m_pPatch->GetContentMods(i), m_pPatch->GetPropMods(i), _T(""), TRUE);
m_ShownIndex = i;
m_cFileList.Invalidate();
}
progDlg.SetProgress64(i, m_arFileStates.GetCount());
}
progDlg.Stop();
}
}
示例2: Refresh
void CDeleteRemoteTagDlg::Refresh()
{
m_ctrlTags.DeleteAllItems();
m_SelectAll.SetCheck(BST_UNCHECKED);
m_taglist.clear();
CSysProgressDlg sysProgressDlg;
sysProgressDlg.SetTitle(CString(MAKEINTRESOURCE(IDS_APPNAME)));
sysProgressDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_LOADING)));
sysProgressDlg.SetLine(2, CString(MAKEINTRESOURCE(IDS_PROGRESSWAIT)));
sysProgressDlg.SetShowProgressBar(false);
sysProgressDlg.ShowModal(this, true);
if (g_Git.GetRemoteTags(m_sRemote, m_taglist))
{
sysProgressDlg.Stop();
MessageBox(g_Git.GetGitLastErr(L"Could not retrieve remote tags.", CGit::GIT_CMD_FETCH), L"TortoiseGit", MB_ICONERROR);
}
sysProgressDlg.Stop();
BringWindowToTop();
for (int i = 0; i < (int)m_taglist.size(); ++i)
m_ctrlTags.InsertItem(i, m_taglist[i]);
DialogEnableWindow(IDOK, FALSE);
}
示例3: PatchSelected
void CFilePatchesDlg::PatchSelected()
{
if (m_pCallBack)
{
CSysProgressDlg progDlg;
progDlg.SetTitle(IDR_MAINFRAME);
progDlg.SetShowProgressBar(true);
progDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_PATCH_SELECTED)));
progDlg.ShowModeless(m_hWnd);
// The list cannot be sorted by user, so the order of the
// items in the list is identical to the order in the array
// m_arFileStates.
int selCount = m_cFileList.GetSelectedCount();
int count = 1;
POSITION pos = m_cFileList.GetFirstSelectedItemPosition();
int index;
BOOL ret = TRUE;
while (((index = m_cFileList.GetNextSelectedItem(pos)) >= 0) && (!progDlg.HasUserCancelled()) && ret == TRUE)
{
if (m_arFileStates.GetAt(index)!= FPDLG_FILESTATE_PATCHED)
{
progDlg.SetLine(2, m_pPatch->GetFullPath(m_sPath, index), true);
ret = m_pCallBack->PatchFile(index, true, false);
}
progDlg.SetProgress64(count++, selCount);
}
progDlg.Stop();
}
}
示例4: OnBnClickedOk
void CDeleteRemoteTagDlg::OnBnClickedOk()
{
if (m_ctrlTags.GetSelectedCount() > 1)
{
CString msg;
msg.Format(IDS_PROC_DELETENREFS, m_ctrlTags.GetSelectedCount());
if (CMessageBox::Show(m_hWnd, msg, _T("TortoiseGit"), 2, IDI_QUESTION, CString(MAKEINTRESOURCE(IDS_DELETEBUTTON)), CString(MAKEINTRESOURCE(IDS_ABORTBUTTON))) == 2)
return;
}
else // GetSelectedCount() is 1, otherwise the button is disabled
{
POSITION pos = m_ctrlTags.GetFirstSelectedItemPosition();
CString msg;
msg.Format(IDS_PROC_DELETEBRANCHTAG, (LPCTSTR)m_taglist[(m_ctrlTags.GetNextSelectedItem(pos))]);
if (CMessageBox::Show(m_hWnd, msg, _T("TortoiseGit"), 2, IDI_QUESTION, CString(MAKEINTRESOURCE(IDS_DELETEBUTTON)), CString(MAKEINTRESOURCE(IDS_ABORTBUTTON))) == 2)
return;
}
STRING_VECTOR list;
POSITION pos = m_ctrlTags.GetFirstSelectedItemPosition();
int index;
while ((index = m_ctrlTags.GetNextSelectedItem(pos)) >= 0)
list.push_back(_T("refs/tags/") + m_taglist[index]);
CSysProgressDlg sysProgressDlg;
sysProgressDlg.SetTitle(CString(MAKEINTRESOURCE(IDS_APPNAME)));
sysProgressDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_DELETING_REMOTE_REFS)));
sysProgressDlg.SetLine(2, CString(MAKEINTRESOURCE(IDS_PROGRESSWAIT)));
sysProgressDlg.SetShowProgressBar(false);
sysProgressDlg.ShowModal(this, true);
if (g_Git.DeleteRemoteRefs(m_sRemote, list))
CMessageBox::Show(m_hWnd, g_Git.GetGitLastErr(_T("Could not delete remote ref."), CGit::GIT_CMD_PUSH), _T("TortoiseGit"), MB_OK | MB_ICONERROR);
sysProgressDlg.Stop();
BringWindowToTop();
Refresh();
}
示例5: PatchSelected
void CFilePatchesDlg::PatchSelected()
{
if (m_pCallBack)
{
CSysProgressDlg progDlg;
progDlg.SetTitle(IDR_MAINFRAME);
progDlg.SetShowProgressBar(true);
progDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_PATCH_SELECTED)));
progDlg.ShowModeless(m_hWnd);
// The list cannot be sorted by user, so the order of the
// items in the list is identical to the order in the array
// m_arFileStates.
int selCount = m_cFileList.GetSelectedCount();
int count = 1;
POSITION pos = m_cFileList.GetFirstSelectedItemPosition();
int index;
while (((index = m_cFileList.GetNextSelectedItem(pos)) >= 0) && (!progDlg.HasUserCancelled()))
{
if (m_arFileStates.GetAt(index) == FPDLG_FILESTATE_ERROR)
MessageBox(m_pPatch->GetPatchRejects(index), NULL, MB_ICONERROR);
else if (m_arFileStates.GetAt(index) != FPDLG_FILESTATE_PATCHED)
{
progDlg.SetLine(2, GetFullPath(index), true);
m_pCallBack->PatchFile(m_pPatch->GetStrippedPath(index), m_pPatch->GetContentMods(index), m_pPatch->GetPropMods(index), _T(""), TRUE);
m_ShownIndex = index;
m_cFileList.Invalidate();
}
progDlg.SetProgress64(count++, selCount);
}
progDlg.Stop();
}
}
示例6: CheckPatchPath
CString GitPatch::CheckPatchPath(const CString& path)
{
// first check if the path already matches
if (CountMatches(path) > (GetNumberOfFiles() / 3))
return path;
CSysProgressDlg progress;
CString tmp;
progress.SetTitle(IDS_PATCH_SEARCHPATHTITLE);
progress.SetShowProgressBar(false);
tmp.LoadString(IDS_PATCH_SEARCHPATHLINE1);
progress.SetLine(1, tmp);
progress.ShowModeless(AfxGetMainWnd());
// now go up the tree and try again
CString upperpath = path;
while (upperpath.ReverseFind('\\')>0)
{
upperpath = upperpath.Left(upperpath.ReverseFind('\\'));
progress.SetLine(2, upperpath, true);
if (progress.HasUserCancelled())
return path;
if (CountMatches(upperpath) > (GetNumberOfFiles()/3))
return upperpath;
}
// still no match found. So try sub folders
bool isDir = false;
CString subpath;
CDirFileEnum filefinder(path);
while (filefinder.NextFile(subpath, &isDir))
{
if (progress.HasUserCancelled())
return path;
if (!isDir)
continue;
if (GitAdminDir::IsAdminDirPath(subpath))
continue;
progress.SetLine(2, subpath, true);
if (CountMatches(subpath) > (GetNumberOfFiles()/3))
return subpath;
}
// if a patch file only contains newly added files
// we can't really find the correct path.
// But: we can compare paths strings without the filenames
// and check if at least those match
upperpath = path;
while (upperpath.ReverseFind('\\')>0)
{
upperpath = upperpath.Left(upperpath.ReverseFind('\\'));
progress.SetLine(2, upperpath, true);
if (progress.HasUserCancelled())
return path;
if (CountDirMatches(upperpath) > (GetNumberOfFiles()/3))
return upperpath;
}
return path;
}
示例7: Execute
bool RebaseCommand::Execute()
{
bool bRet =false;
if(!g_Git.CheckCleanWorkTree())
{
if (CMessageBox::Show(NULL, IDS_ERROR_NOCLEAN_STASH, IDS_APPNAME, 1, IDI_QUESTION, IDS_STASHBUTTON, IDS_ABORTBUTTON) == 1)
{
CSysProgressDlg sysProgressDlg;
sysProgressDlg.SetTitle(CString(MAKEINTRESOURCE(IDS_APPNAME)));
sysProgressDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_PROC_STASHRUNNING)));
sysProgressDlg.SetLine(2, CString(MAKEINTRESOURCE(IDS_PROGRESSWAIT)));
sysProgressDlg.SetShowProgressBar(false);
sysProgressDlg.SetCancelMsg(IDS_PROGRS_INFOFAILED);
sysProgressDlg.ShowModeless((HWND)NULL, true);
CString cmd,out;
cmd=_T("git.exe stash");
if (g_Git.Run(cmd, &out, CP_UTF8))
{
sysProgressDlg.Stop();
CMessageBox::Show(NULL,out,_T("TortoiseGit"),MB_OK);
return false;
}
sysProgressDlg.Stop();
}
else
{
return false;
}
}
while(1)
{
CRebaseDlg dlg;
dlg.m_PostButtonTexts.Add(CString(MAKEINTRESOURCE(IDS_MENULOG)));
dlg.m_PostButtonTexts.Add(CString(MAKEINTRESOURCE(IDS_PROC_RESTARTREBASE)));
INT_PTR ret = dlg.DoModal();
if( ret == IDOK)
{
bRet=true;
return bRet;
}
if( ret == IDCANCEL)
{
bRet=false;
return bRet;
}
if (ret == IDC_REBASE_POST_BUTTON)
{
CString cmd = _T("/command:log");
cmd += _T(" /path:\"") + g_Git.m_CurrentDir + _T("\"");
CAppUtils::RunTortoiseProc(cmd);
return true;
}
}
return bRet;
}
示例8: DoDeleteRef
bool CBrowseRefsDlg::DoDeleteRef(CString completeRefName)
{
bool bIsRemoteBranch = false;
bool bIsBranch = false;
if (wcsncmp(completeRefName, L"refs/remotes/",13) == 0) {bIsBranch = true; bIsRemoteBranch = true;}
else if (wcsncmp(completeRefName, L"refs/heads/",11) == 0) {bIsBranch = true;}
if (bIsRemoteBranch)
{
CString branchToDelete = completeRefName.Mid(13);
CString remoteName, remoteBranchToDelete;
if (SplitRemoteBranchName(branchToDelete, remoteName, remoteBranchToDelete))
return false;
if (CAppUtils::IsSSHPutty())
CAppUtils::LaunchPAgent(NULL, &remoteName);
CSysProgressDlg sysProgressDlg;
sysProgressDlg.SetTitle(CString(MAKEINTRESOURCE(IDS_APPNAME)));
sysProgressDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_DELETING_REMOTE_REFS)));
sysProgressDlg.SetLine(2, CString(MAKEINTRESOURCE(IDS_PROGRESSWAIT)));
sysProgressDlg.SetShowProgressBar(false);
sysProgressDlg.ShowModal(this, true);
STRING_VECTOR list;
list.push_back(_T("refs/heads/") + remoteBranchToDelete);
if (g_Git.DeleteRemoteRefs(remoteName, list))
{
CMessageBox::Show(m_hWnd, g_Git.GetGitLastErr(_T("Could not delete remote ref."), CGit::GIT_CMD_PUSH), _T("TortoiseGit"), MB_OK | MB_ICONERROR);
sysProgressDlg.Stop();
BringWindowToTop();
return false;
}
sysProgressDlg.Stop();
BringWindowToTop();
}
else if (bIsBranch)
{
if (g_Git.DeleteRef(completeRefName))
{
CMessageBox::Show(m_hWnd, g_Git.GetGitLastErr(L"Could not delete reference.", CGit::GIT_CMD_DELETETAGBRANCH), _T("TortoiseGit"), MB_OK | MB_ICONERROR);
return false;
}
}
else if (wcsncmp(completeRefName, L"refs/tags/", 10) == 0)
{
if (g_Git.DeleteRef(completeRefName))
{
CMessageBox::Show(m_hWnd, g_Git.GetGitLastErr(L"Could not delete reference.", CGit::GIT_CMD_DELETETAGBRANCH), _T("TortoiseGit"), MB_OK | MB_ICONERROR);
return false;
}
}
return true;
}
示例9: askIfUserWantsToStashPop
void SVNRebaseCommand::askIfUserWantsToStashPop()
{
if(CMessageBox::Show(NULL, IDS_DCOMMIT_STASH_POP, IDS_APPNAME, MB_YESNO|MB_ICONINFORMATION) == IDYES)
{
CSysProgressDlg sysProgressDlg;
sysProgressDlg.SetTitle(CString(MAKEINTRESOURCE(IDS_APPNAME)));
sysProgressDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_PROC_STASHRUNNING)));
sysProgressDlg.SetLine(2, CString(MAKEINTRESOURCE(IDS_PROGRESSWAIT)));
sysProgressDlg.SetShowProgressBar(false);
sysProgressDlg.SetCancelMsg(IDS_PROGRS_INFOFAILED);
sysProgressDlg.ShowModeless((HWND)NULL, true);
CString cmd,out;
cmd=_T("git.exe stash pop");
if (g_Git.Run(cmd, &out, CP_UTF8))
{
sysProgressDlg.Stop();
CMessageBox::Show(NULL,out,_T("TortoiseGit"), MB_OK);
}
sysProgressDlg.Stop();
}
}
示例10: Refresh
void CDeleteRemoteTagDlg::Refresh()
{
m_ctrlTags.DeleteAllItems();
m_SelectAll.SetCheck(BST_UNCHECKED);
m_taglist.clear();
CSysProgressDlg sysProgressDlg;
sysProgressDlg.SetTitle(CString(MAKEINTRESOURCE(IDS_APPNAME)));
sysProgressDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_LOADING)));
sysProgressDlg.SetLine(2, CString(MAKEINTRESOURCE(IDS_PROGRESSWAIT)));
sysProgressDlg.SetShowProgressBar(false);
sysProgressDlg.ShowModal(this, true);
g_Git.GetRemoteTags(m_sRemote, m_taglist);
sysProgressDlg.Stop();
for (int i = 0; i < (int)m_taglist.size(); ++i)
{
m_ctrlTags.InsertItem(i, m_taglist[i]);
}
DialogEnableWindow(IDOK, FALSE);
}
示例11: OnBnClickedOk
void CDeleteRemoteTagDlg::OnBnClickedOk()
{
if (m_ctrlTags.GetSelectedCount() > 1)
{
CString msg;
msg.Format(IDS_PROC_DELETENREFS, m_ctrlTags.GetSelectedCount());
if (CMessageBox::Show(m_hWnd, msg, _T("TortoiseGit"), 2, IDI_QUESTION, CString(MAKEINTRESOURCE(IDS_DELETEBUTTON)), CString(MAKEINTRESOURCE(IDS_ABORTBUTTON))) == 2)
return;
}
else // GetSelectedCount() is 1, otherwise the button is disabled
{
POSITION pos = m_ctrlTags.GetFirstSelectedItemPosition();
CString msg;
msg.Format(IDS_PROC_DELETEBRANCHTAG, m_taglist[(m_ctrlTags.GetNextSelectedItem(pos))]);
if (CMessageBox::Show(m_hWnd, msg, _T("TortoiseGit"), 2, IDI_QUESTION, CString(MAKEINTRESOURCE(IDS_DELETEBUTTON)), CString(MAKEINTRESOURCE(IDS_ABORTBUTTON))) == 2)
return;
}
CMassiveGitTask mgtPush(_T("push ") + m_sRemote, FALSE);
POSITION pos = m_ctrlTags.GetFirstSelectedItemPosition();
int index;
while ((index = m_ctrlTags.GetNextSelectedItem(pos)) >= 0)
{
mgtPush.AddFile(_T(":refs/tags/") + m_taglist[index]);
}
CSysProgressDlg sysProgressDlg;
sysProgressDlg.SetTitle(CString(MAKEINTRESOURCE(IDS_APPNAME)));
sysProgressDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_DELETING_REMOTE_REFS)));
sysProgressDlg.SetLine(2, CString(MAKEINTRESOURCE(IDS_PROGRESSWAIT)));
sysProgressDlg.SetShowProgressBar(false);
sysProgressDlg.ShowModal(this, true);
BOOL cancel = FALSE;
mgtPush.Execute(cancel);
sysProgressDlg.Stop();
Refresh();
}
示例12: PatchAll
void CFilePatchesDlg::PatchAll()
{
if (m_pCallBack)
{
CSysProgressDlg progDlg;
progDlg.SetTitle(IDR_MAINFRAME);
progDlg.SetShowProgressBar(true);
progDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_PATCH_ALL)));
progDlg.ShowModeless(m_hWnd);
BOOL ret = TRUE;
for (int i=0; i<m_arFileStates.GetCount() && !progDlg.HasUserCancelled() && ret == TRUE; i++)
{
if (m_arFileStates.GetAt(i)!= FPDLG_FILESTATE_PATCHED)
{
progDlg.SetLine(2, m_pPatch->GetFullPath(m_sPath, i), true);
ret = m_pCallBack->PatchFile(i, true, false);
}
progDlg.SetProgress64(i, m_arFileStates.GetCount());
}
progDlg.Stop();
}
}
示例13: Execute
bool SVNRebaseCommand::Execute()
{
if (!GitAdminDir::HasAdminDir(g_Git.m_CurrentDir))
{
CMessageBox::Show(GetExplorerHWND(), IDS_NOWORKINGCOPY, IDS_APPNAME, MB_ICONERROR);
return false;
}
bool isStash = false;
if(!g_Git.CheckCleanWorkTree())
{
if (CMessageBox::Show(GetExplorerHWND(), g_Git.m_CurrentDir + L"\r\n" + CString(MAKEINTRESOURCE(IDS_ERROR_NOCLEAN_STASH)), L"TortoiseGit", 1, IDI_QUESTION, CString(MAKEINTRESOURCE(IDS_STASHBUTTON)), CString(MAKEINTRESOURCE(IDS_ABORTBUTTON))) == 1)
{
CSysProgressDlg sysProgressDlg;
sysProgressDlg.SetTitle(CString(MAKEINTRESOURCE(IDS_APPNAME)));
sysProgressDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_PROC_STASHRUNNING)));
sysProgressDlg.SetLine(2, CString(MAKEINTRESOURCE(IDS_PROGRESSWAIT)));
sysProgressDlg.SetShowProgressBar(false);
sysProgressDlg.SetCancelMsg(IDS_PROGRS_INFOFAILED);
sysProgressDlg.ShowModeless(static_cast<HWND>(nullptr), true);
CString out;
if (g_Git.Run(L"git.exe stash", &out, CP_UTF8))
{
sysProgressDlg.Stop();
MessageBox(GetExplorerHWND(), out, L"TortoiseGit", MB_OK | MB_ICONERROR);
return false;
}
sysProgressDlg.Stop();
isStash = true;
}
else
{
return false;
}
}
CRebaseDlg dlg;
// dlg.m_PreCmd=L"git.exe svn fetch";
CString out, err;
if (!g_Git.Run(L"git.exe config svn-remote.svn.fetch", &out, &err, CP_UTF8))
{
int start = out.Find(L':');
if( start >=0 )
out=out.Mid(start);
if (CStringUtils::StartsWith(out, L":refs"))
out = out.Mid(static_cast<int>(wcslen(L":refs")) + 1);
start = 0;
out = out.Tokenize(L"\n", start);
}
else
{
MessageBox(GetExplorerHWND(), L"Could not get \"svn-remote.svn.fetch\" config value.\n" + out + L'\n' + err, L"TortoiseGit", MB_OK | MB_ICONERROR);
return false;
}
dlg.m_Upstream=out;
CGitHash UpStreamOldHash,HeadHash,UpStreamNewHash;
if (g_Git.GetHash(UpStreamOldHash, out))
{
MessageBox(GetExplorerHWND(), g_Git.GetGitLastErr(L"Could not get hash of SVN branch."), L"TortoiseGit", MB_ICONERROR);
return false;
}
if (g_Git.GetHash(HeadHash, L"HEAD"))
{
MessageBox(GetExplorerHWND(), g_Git.GetGitLastErr(L"Could not get HEAD hash."), L"TortoiseGit", MB_ICONERROR);
return false;
}
CProgressDlg progress;
progress.m_GitCmd = L"git.exe svn fetch";
progress.m_AutoClose = AUTOCLOSE_IF_NO_ERRORS;
if(progress.DoModal()!=IDOK)
return false;
if(progress.m_GitStatus)
return false;
if (g_Git.GetHash(UpStreamNewHash, out))
{
MessageBox(GetExplorerHWND(), g_Git.GetGitLastErr(L"Could not get upstream hash after fetching."), L"TortoiseGit", MB_ICONERROR);
return false;
}
//everything updated
if(UpStreamNewHash==HeadHash)
{
MessageBox(GetExplorerHWND(), g_Git.m_CurrentDir + L"\r\n" + CString(MAKEINTRESOURCE(IDS_PROC_EVERYTHINGUPDATED)), L"TortoiseGit", MB_OK | MB_ICONQUESTION);
if(isStash)
askIfUserWantsToStashPop();
return true;
}
//.........这里部分代码省略.........
示例14: Execute
bool CleanupCommand::Execute()
{
bool bRet = false;
CCleanTypeDlg dlg;
if( dlg.DoModal() == IDOK)
{
bool quotepath = g_Git.GetConfigValueBool(_T("core.quotepath"));
CString cmd;
cmd.Format(_T("git clean"));
if (dlg.m_bDryRun || !dlg.m_bNoRecycleBin)
cmd += _T(" -n ");
if(dlg.m_bDir)
cmd += _T(" -d ");
switch(dlg.m_CleanType)
{
case 0:
cmd += _T(" -fx");
break;
case 1:
cmd += _T(" -f");
break;
case 2:
cmd += _T(" -fX");
break;
}
if (dlg.m_bDryRun || dlg.m_bNoRecycleBin)
{
CProgressDlg progress;
for (int i = 0; i < this->pathList.GetCount(); ++i)
{
CString path;
if (this->pathList[i].IsDirectory())
path = pathList[i].GetGitPathString();
else
path = pathList[i].GetContainingDirectory().GetGitPathString();
progress.m_GitCmdList.push_back(cmd + _T(" \"") + path + _T("\""));
}
if (progress.DoModal()==IDOK)
return TRUE;
}
else
{
CSysProgressDlg sysProgressDlg;
sysProgressDlg.SetAnimation(IDR_CLEANUPANI);
sysProgressDlg.SetTitle(CString(MAKEINTRESOURCE(IDS_APPNAME)));
sysProgressDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_PROC_CLEANUP_INFO1)));
sysProgressDlg.SetLine(2, CString(MAKEINTRESOURCE(IDS_PROGRESSWAIT)));
sysProgressDlg.SetShowProgressBar(false);
sysProgressDlg.ShowModeless((HWND)NULL, true);
CString cmdout, cmdouterr;
if (g_Git.Run(cmd, &cmdout, &cmdouterr, CP_UTF8)) {
MessageBox(NULL, cmdouterr, _T("TortoiseGit"), MB_ICONERROR);
return FALSE;
}
if (sysProgressDlg.HasUserCancelled())
{
CMessageBox::Show(NULL, IDS_SVN_USERCANCELLED, IDS_APPNAME, MB_OK);
return FALSE;
}
int pos = 0;
CString token = cmdout.Tokenize(_T("\n"), pos);
CTGitPathList delList;
while (!token.IsEmpty())
{
if (token.Mid(0, 13) == _T("Would remove "))
{
CString tempPath = token.Mid(13).TrimRight();
if (quotepath)
{
tempPath = UnescapeQuotePath(tempPath.Trim(_T('"')));
}
delList.AddPath(CTGitPath(tempPath));
}
token = cmdout.Tokenize(_T("\n"), pos);
}
if (sysProgressDlg.HasUserCancelled())
{
CMessageBox::Show(NULL, IDS_SVN_USERCANCELLED, IDS_APPNAME, MB_OK);
return FALSE;
}
delList.DeleteAllFiles(true, false);
sysProgressDlg.Stop();
}
}
#if 0
CProgressDlg progress;
progress.SetTitle(IDS_PROC_CLEANUP);
progress.SetAnimation(IDR_CLEANUPANI);
progress.SetShowProgressBar(false);
//.........这里部分代码省略.........
示例15: OnNMRclickFilelist
void CFilePatchesDlg::OnNMRclickFilelist(NMHDR * /*pNMHDR*/, LRESULT *pResult)
{
*pResult = 0;
if (m_sPath.IsEmpty())
return;
CString temp;
CMenu popup;
POINT point;
DWORD ptW = GetMessagePos();
point.x = GET_X_LPARAM(ptW);
point.y = GET_Y_LPARAM(ptW);
if (popup.CreatePopupMenu())
{
UINT nFlags;
nFlags = MF_STRING | (m_cFileList.GetSelectedCount()==1 ? MF_ENABLED : MF_DISABLED | MF_GRAYED);
temp.LoadString(IDS_PATCH_REVIEW);
popup.AppendMenu(nFlags, ID_PATCH_REVIEW, temp);
popup.SetDefaultItem(ID_PATCH_REVIEW, FALSE);
temp.LoadString(IDS_PATCH_PREVIEW);
popup.AppendMenu(nFlags, ID_PATCHPREVIEW, temp);
temp.LoadString(IDS_PATCH_ALL);
popup.AppendMenu(MF_STRING | MF_ENABLED, ID_PATCHALL, temp);
nFlags = MF_STRING | (m_cFileList.GetSelectedCount()>0 ? MF_ENABLED : MF_DISABLED | MF_GRAYED);
temp.LoadString(IDS_PATCH_SELECTED);
popup.AppendMenu(nFlags, ID_PATCHSELECTED, temp);
// if the context menu is invoked through the keyboard, we have to use
// a calculated position on where to anchor the menu on
if ((point.x == -1) && (point.y == -1))
{
CRect rect;
GetWindowRect(&rect);
point = rect.CenterPoint();
}
bool bReview=false;
int cmd = popup.TrackPopupMenu(TPM_RETURNCMD | TPM_LEFTALIGN | TPM_NONOTIFY, point.x, point.y, this, 0);
switch (cmd)
{
case ID_PATCH_REVIEW:
bReview = true;
//go through case
case ID_PATCHPREVIEW:
{
if (m_pCallBack)
{
int nIndex = m_cFileList.GetSelectionMark();
if ( m_arFileStates.GetAt(nIndex)!=FPDLG_FILESTATE_PATCHED)
{
m_pCallBack->PatchFile(GetFullPath(nIndex), m_pPatch->GetRevision(nIndex),false,bReview);
}
}
}
break;
case ID_PATCHALL:
{
if (m_pCallBack)
{
CSysProgressDlg progDlg;
progDlg.SetTitle(IDR_MAINFRAME);
progDlg.SetShowProgressBar(true);
progDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_PATCH_ALL)));
progDlg.ShowModeless(m_hWnd);
for (int i=0; i<m_arFileStates.GetCount() && !progDlg.HasUserCancelled(); i++)
{
if (m_arFileStates.GetAt(i)!= FPDLG_FILESTATE_PATCHED)
{
progDlg.SetLine(2, GetFullPath(i), true);
m_pCallBack->PatchFile(GetFullPath(i), m_pPatch->GetRevision(i), TRUE);
}
progDlg.SetProgress64(i, m_arFileStates.GetCount());
}
progDlg.Stop();
}
}
break;
case ID_PATCHSELECTED:
{
if (m_pCallBack)
{
CSysProgressDlg progDlg;
progDlg.SetTitle(IDR_MAINFRAME);
progDlg.SetShowProgressBar(true);
progDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_PATCH_SELECTED)));
progDlg.ShowModeless(m_hWnd);
// The list cannot be sorted by user, so the order of the
// items in the list is identical to the order in the array
// m_arFileStates.
int selCount = m_cFileList.GetSelectedCount();
int count = 1;
POSITION pos = m_cFileList.GetFirstSelectedItemPosition();
int index;
//.........这里部分代码省略.........