void CGitSwitchDlg::OnBnClickedOk() { this->UpdateData(TRUE); // make sure a valid branch has been entered if a new branch is required m_NewBranch.Trim(); if (m_bBranch) { if (!g_Git.IsBranchNameValid(m_NewBranch)) { // new branch requested but name is empty or contains spaces ShowEditBalloon(IDC_EDIT_BRANCH, IDS_B_T_NOTEMPTY, IDS_ERR_ERROR, TTI_ERROR); return; } else if (!m_bBranchOverride && g_Git.BranchTagExists(m_NewBranch)) { // branch already exists CString msg; msg.LoadString(IDS_B_EXISTS); ShowEditBalloon(IDC_EDIT_BRANCH, msg + L' ' + CString(MAKEINTRESOURCE(IDS_B_DIFFERENTNAMEOROVERRIDE)), CString(MAKEINTRESOURCE(IDS_WARN_WARNING))); return; } else if (g_Git.BranchTagExists(m_NewBranch, false)) { // tag with the same name exists -> shortref is ambiguous if (CMessageBox::Show(m_hWnd, IDS_B_SAMETAGNAMEEXISTS, IDS_APPNAME, 2, IDI_EXCLAMATION, IDS_CONTINUEBUTTON, IDS_ABORTBUTTON) == 2) return; } } UpdateRevsionName(); //this->m_Version.SaveHistory(); OnOK(); }
void CRenameDlg::OnOK() { UpdateData(); m_name.Trim(); bool nameAllowed = ((m_originalName != m_name) || !m_renameRequired) && !m_name.IsEmpty(); if (!nameAllowed) { m_bBalloonVisible = true; ShowEditBalloon(IDC_NAME, IDS_WARN_RENAMEREQUIRED, IDS_ERR_ERROR, TTI_ERROR); return; } CTGitPath path(m_name); if (!path.IsValidOnWindows() || !PathIsRelative(m_name)) { m_bBalloonVisible = true; ShowEditBalloon(IDC_NAME, IDS_WARN_NOVALIDPATH, IDS_ERR_ERROR, TTI_ERROR); return; } if (m_pInputValidator) { CString sError = m_pInputValidator(IDC_NAME, m_name); if (!sError.IsEmpty()) { m_bBalloonVisible = true; ShowEditBalloon(IDC_NAME, sError, CString(MAKEINTRESOURCE(IDS_ERR_ERROR)), TTI_ERROR); return; } } CHorizontalResizableStandAloneDialog::OnOK(); }
void CSetHooksAdv::OnOK() { UpdateData(); int cursel = m_cHookTypeCombo.GetCurSel(); key.htype = unknown_hook; if (cursel != CB_ERR) { key.htype = (hooktype)m_cHookTypeCombo.GetItemData(cursel); key.path = CTGitPath(m_sPath); cmd.commandline = m_sCommandLine; cmd.bWait = !!m_bWait; cmd.bShow = !m_bHide; } if (key.htype == unknown_hook) { m_tooltips.ShowBalloon(IDC_HOOKTYPECOMBO, IDS_ERR_NOHOOKTYPESPECIFIED, IDS_ERR_ERROR, TTI_ERROR); return; } if (key.path.IsEmpty()) { ShowEditBalloon(IDC_HOOKPATH, IDS_ERR_NOHOOKPATHSPECIFIED, IDS_ERR_ERROR, TTI_ERROR); return; } if (cmd.commandline.IsEmpty()) { ShowEditBalloon(IDC_HOOKCOMMANDLINE, IDS_ERR_NOHOOKCOMMANDPECIFIED, IDS_ERR_ERROR, TTI_ERROR); return; } CResizableStandAloneDialog::OnOK(); }
void CSetBugTraqAdv::OnOK() { UpdateData(); m_provider_clsid = GUID_NULL; int index = m_cProviderCombo.GetCurSel(); if (index != CB_ERR) { CBugTraqProvider *provider = (CBugTraqProvider *)m_cProviderCombo.GetItemDataPtr(index); m_provider_clsid = provider->clsid; } CComPtr<IBugTraqProvider> pProvider; HRESULT hr = pProvider.CoCreateInstance(m_provider_clsid); if (FAILED(hr)) { m_tooltips.ShowBalloon(IDC_BUGTRAQPROVIDERCOMBO, IDS_ERR_MISSING_PROVIDER, IDS_ERR_ERROR, TTI_ERROR); return; } VARIANT_BOOL valid; ATL::CComBSTR parameters; parameters.Attach(m_sParameters.AllocSysString()); hr = pProvider->ValidateParameters(GetSafeHwnd(), parameters, &valid); if (FAILED(hr)) { ShowEditBalloon(IDC_BUGTRAQPARAMETERS, IDS_ERR_PROVIDER_VALIDATE_FAILED, IDS_ERR_ERROR, TTI_ERROR); return; } if (valid == VARIANT_FALSE) return; // It's assumed that the provider will have done this. if (m_pAssociations) { CBugTraqAssociation bugtraq_association; if (m_pAssociations->FindProvider(CTSVNPathList(CTSVNPath(m_sPath)), &bugtraq_association)) { if (bugtraq_association.GetPath().IsEquivalentToWithoutCase(CTSVNPath(m_sPath))) { ShowEditBalloon(IDC_BUGTRAQPATH, IDS_ERR_PROVIDER_PATH_ALREADY_CONFIGURED, IDS_ERR_ERROR, TTI_ERROR); return; } } } CResizableStandAloneDialog::OnOK(); }
void CEditPropExternalsValue::OnOK() { UpdateData(); m_sWCPath.Trim(L"\"'"); if (!CTSVNPath(m_sWCPath).IsValidOnWindows()) { ShowEditBalloon(IDC_CHECKOUTDIRECTORY, IDS_ERR_NOVALIDPATH, IDS_ERR_ERROR, TTI_ERROR); return; } if (::IsWindow(m_pLogDlg->GetSafeHwnd())&&(m_pLogDlg->IsWindowVisible())) { m_pLogDlg->SendMessage(WM_CLOSE); return; } if (GetCheckedRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N) == IDC_REVISION_HEAD) { m_External.revision.kind = svn_opt_revision_head; m_sPegRev.Empty(); } else { SVNRev rev = m_sRevision; if (!rev.IsValid()) { ShowEditBalloon(IDC_REVISION_N, IDS_ERR_INVALIDREV, IDS_ERR_ERROR, TTI_ERROR); return; } m_External.revision = *rev; } m_URLCombo.SaveHistory(); m_URL = CTSVNPath(m_URLCombo.GetString()); m_External.url = CUnicodeUtils::GetUnicode(CPathUtils::PathEscape(CUnicodeUtils::GetUTF8(m_URL.GetSVNPathString()))); if (m_URL.GetSVNPathString().GetLength() && (m_URL.GetSVNPathString()[0] == '^')) { // the ^ char must not be escaped m_External.url = CUnicodeUtils::GetUnicode(CPathUtils::PathEscape(CUnicodeUtils::GetUTF8(m_URL.GetSVNPathString().Mid(1)))); m_External.url = '^' + m_External.url; } if (m_sPegRev.IsEmpty()) m_External.pegrevision = *SVNRev(L"HEAD"); else m_External.pegrevision = *SVNRev(m_sPegRev); m_External.targetDir = m_sWCPath; CResizableStandAloneDialog::OnOK(); }
LPARAM CMergeWizardRevRange::OnWCStatus(WPARAM wParam, LPARAM /*lParam*/) { if (wParam) { ShowEditBalloon(IDC_WCEDIT, IDS_MERGE_WCDIRTY, IDS_WARN_WARNING, TTI_WARNING); } return 0; }
void CCreateBranchTagDlg::OnBnClickedOk() { this->UpdateData(TRUE); if(this->m_bSign && this->m_Message.IsEmpty()) { CMessageBox::Show(NULL, IDS_COMMITDLG_NOMESSAGE, IDS_APPNAME, MB_OK); return; } this->m_BranchTagName.Trim(); if(!g_Git.IsBranchNameValid(this->m_BranchTagName)) { ShowEditBalloon(IDC_BRANCH_TAG, IDS_B_T_NOTEMPTY, IDS_ERR_ERROR, TTI_ERROR); return; } if (!m_bForce && g_Git.BranchTagExists(m_BranchTagName, !m_bIsTag)) { if (!m_bIsTag && g_Git.GetCurrentBranch(true) == m_BranchTagName) { ShowEditBalloon(IDC_BRANCH_TAG, CString(MAKEINTRESOURCE(IDS_B_CANNOTFORCECURRENT)), CString(MAKEINTRESOURCE(IDS_WARN_WARNING))); return; } CString msg; if (m_bIsTag) msg.LoadString(IDS_T_EXISTS); else msg.LoadString(IDS_B_EXISTS); ShowEditBalloon(IDC_BRANCH_TAG, msg + _T(" ") + CString(MAKEINTRESOURCE(IDS_B_T_DIFFERENTNAMEORFORCE)), CString(MAKEINTRESOURCE(IDS_WARN_WARNING))); return; } if (g_Git.BranchTagExists(m_BranchTagName, m_bIsTag == TRUE)) { CString msg; if (m_bIsTag) msg.LoadString(IDS_T_SAMEBRANCHNAMEEXISTS); else msg.LoadString(IDS_B_SAMETAGNAMEEXISTS); if (CMessageBox::Show(m_hWnd, msg, _T("TortoiseGit"), 2, IDI_EXCLAMATION, CString(MAKEINTRESOURCE(IDS_CONTINUEBUTTON)), CString(MAKEINTRESOURCE(IDS_ABORTBUTTON))) == 2) return; } this->UpdateRevsionName(); OnOK(); }
void CUpdateDlg::OnOK() { if (!UpdateData(TRUE)) return; // don't dismiss dialog (error message already shown by MFC framework) if (::IsWindow(m_pLogDlg->GetSafeHwnd())&&(m_pLogDlg->IsWindowVisible())) { m_pLogDlg->SendMessage(WM_CLOSE); return; } Revision = SVNRev(m_sRevision); if (GetCheckedRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N) == IDC_REVISION_HEAD) { Revision = SVNRev(_T("HEAD")); } if (!Revision.IsValid()) { ShowEditBalloon(IDC_REVNUM, IDS_ERR_INVALIDREV, IDS_ERR_ERROR, TTI_ERROR); return; } switch (m_depthCombo.GetCurSel()) { case 0: m_depth = svn_depth_unknown; m_checkoutDepths.clear(); break; case 1: m_depth = svn_depth_infinity; m_checkoutDepths.clear(); break; case 2: m_depth = svn_depth_immediates; m_checkoutDepths.clear(); break; case 3: m_depth = svn_depth_files; m_checkoutDepths.clear(); break; case 4: m_depth = svn_depth_empty; m_checkoutDepths.clear(); break; case 5: m_depth = svn_depth_exclude; m_checkoutDepths.clear(); break; default: m_depth = svn_depth_empty; break; } UpdateData(FALSE); CStandAloneDialog::OnOK(); }
void CSettingGitRemote::OnTimer(UINT_PTR nIDEvent) { if (nIDEvent == TIMER_PREFILL) { if (m_strRemote.IsEmpty() && m_ctrlRemoteList.GetCount() == 0) ShowEditBalloon(IDC_EDIT_URL, IDS_B_T_PREFILL_ORIGIN, IDS_HINT, TTI_INFO); KillTimer(TIMER_PREFILL); } }
void CSetBugTraqAdv::OnOK() { UpdateData(); if (m_sPath.IsEmpty() || !PathIsDirectory(m_sPath) || PathIsRelative(m_sPath)) { ShowEditBalloon(IDC_BUGTRAQPATH, (LPCTSTR)CFormatMessageWrapper(ERROR_PATH_NOT_FOUND), CString(MAKEINTRESOURCE(IDS_ERR_ERROR)), TTI_ERROR); return; } m_provider_clsid = GUID_NULL; int index = m_cProviderCombo.GetCurSel(); if (index != CB_ERR) { CBugTraqProvider *provider = (CBugTraqProvider *)m_cProviderCombo.GetItemDataPtr(index); m_provider_clsid = provider->clsid; } CComPtr<IBugTraqProvider> pProvider; HRESULT hr = pProvider.CoCreateInstance(m_provider_clsid); if (FAILED(hr)) { m_tooltips.ShowBalloon(IDC_BUGTRAQPROVIDERCOMBO, IDS_ERR_MISSING_PROVIDER, IDS_ERR_ERROR, TTI_ERROR); return; } VARIANT_BOOL valid; ATL::CComBSTR parameters(m_sParameters); hr = pProvider->ValidateParameters(GetSafeHwnd(), parameters, &valid); if (FAILED(hr)) { ShowEditBalloon(IDC_BUGTRAQPARAMETERS, IDS_ERR_PROVIDER_VALIDATE_FAILED, IDS_ERR_ERROR, TTI_ERROR); return; } if (valid != VARIANT_TRUE) return; // It's assumed that the provider will have done this. CResizableStandAloneDialog::OnOK(); }
void CSettingGitRemote::OnEnChangeEditRemote() { m_ChangedMask|=REMOTE_NAME; this->UpdateData(); if (IsRemoteCollideWithRefspec(m_strRemote)) ShowEditBalloon(IDC_EDIT_REMOTE, IDS_B_T_REMOTE_NAME_COLLIDE, IDS_HINT, TTI_WARNING); if( (!this->m_strRemote.IsEmpty())&&(!this->m_strUrl.IsEmpty()) ) this->SetModified(); }
void CCloneDlg::OnOK() { m_bSaving = true; this->m_URLCombo.GetWindowTextW(m_URL); m_URL.Trim(); UpdateData(TRUE); if(m_URL.IsEmpty() || m_Directory.IsEmpty()) { CMessageBox::Show(NULL, IDS_PROC_CLONE_URLDIREMPTY, IDS_APPNAME, MB_OK); m_bSaving = false; return; } if (m_bBranch && !g_Git.IsBranchNameValid(m_strBranch)) { ShowEditBalloon(IDC_EDIT_BRANCH, IDS_B_T_NOTEMPTY, IDS_ERR_ERROR, TTI_ERROR); m_bSaving = false; return; } if (m_bOrigin && m_strOrigin.IsEmpty() && !m_bSVN) { ShowEditBalloon(IDC_EDIT_ORIGIN, IDS_B_T_NOTEMPTY, IDS_ERR_ERROR, TTI_ERROR); m_bSaving = false; return; } m_URLCombo.SaveHistory(); m_PuttyKeyCombo.SaveHistory(); m_regCloneDir = m_Directory; m_regUseSSHKey = m_bAutoloadPuttyKeyFile; this->m_PuttyKeyCombo.GetWindowText(m_strPuttyKeyFile); CResizableDialog::OnOK(); m_bSaving = false; }
void CRegexFilterDlg::OnOK() { UpdateData(); try { std::wregex r1 = std::wregex(m_sRegex); UNREFERENCED_PARAMETER(r1); } catch (std::exception&) { ShowEditBalloon(IDC_REGEX, IDS_ERR_INVALIDREGEX, IDS_ERR_ERROR); return; } CDialog::OnOK(); }
void CSetBugTraqAdv::OnOK() { UpdateData(); m_provider_clsid = GUID_NULL; int index = m_cProviderCombo.GetCurSel(); if (index != CB_ERR) { CBugTraqProvider *provider = (CBugTraqProvider *)m_cProviderCombo.GetItemDataPtr(index); m_provider_clsid = provider->clsid; } CComPtr<IBugTraqProvider> pProvider; HRESULT hr = pProvider.CoCreateInstance(m_provider_clsid); if (FAILED(hr)) { m_tooltips.ShowBalloon(IDC_BUGTRAQPROVIDERCOMBO, IDS_ERR_MISSING_PROVIDER, IDS_ERR_ERROR, TTI_ERROR); return; } VARIANT_BOOL valid; ATL::CComBSTR parameters(m_sParameters); hr = pProvider->ValidateParameters(GetSafeHwnd(), parameters, &valid); if (FAILED(hr)) { ShowEditBalloon(IDC_BUGTRAQPARAMETERS, IDS_ERR_PROVIDER_VALIDATE_FAILED, IDS_ERR_ERROR, TTI_ERROR); return; } if (valid != VARIANT_TRUE) return; // It's assumed that the provider will have done this. CResizableStandAloneDialog::OnOK(); }
void CCopyDlg::OnOK() { if (::IsWindow(m_pLogDlg->GetSafeHwnd())&&(m_pLogDlg->IsWindowVisible())) { m_pLogDlg->SendMessage(WM_CLOSE); return; } m_bCancelled = true; // check if the status thread has already finished if ((m_pThread)&&(m_bThreadRunning)) { WaitForSingleObject(m_pThread->m_hThread, 1000); if (m_bThreadRunning) { // we gave the thread a chance to quit. Since the thread didn't // listen to us we have to kill it. TerminateThread(m_pThread->m_hThread, (DWORD)-1); InterlockedExchange(&m_bThreadRunning, FALSE); } } CString id; GetDlgItemText(IDC_BUGID, id); CString sRevText; GetDlgItemText(IDC_COPYREVTEXT, sRevText); if (!m_ProjectProperties.CheckBugID(id)) { ShowEditBalloon(IDC_BUGID, IDS_COMMITDLG_ONLYNUMBERS, IDS_ERR_ERROR, TTI_ERROR); return; } m_sLogMessage = m_cLogMessage.GetText(); if ((m_ProjectProperties.bWarnIfNoIssue) && (id.IsEmpty() && !m_ProjectProperties.HasBugID(m_sLogMessage))) { CTaskDialog taskdlg(CString(MAKEINTRESOURCE(IDS_COMMITDLG_WARNNOISSUE_TASK1)), CString(MAKEINTRESOURCE(IDS_COMMITDLG_WARNNOISSUE_TASK2)), L"TortoiseSVN", 0, TDF_USE_COMMAND_LINKS | TDF_ALLOW_DIALOG_CANCELLATION | TDF_POSITION_RELATIVE_TO_WINDOW | TDF_SIZE_TO_CONTENT); taskdlg.AddCommandControl(1, CString(MAKEINTRESOURCE(IDS_COMMITDLG_WARNNOISSUE_TASK3))); taskdlg.AddCommandControl(2, CString(MAKEINTRESOURCE(IDS_COMMITDLG_WARNNOISSUE_TASK4))); taskdlg.SetCommonButtons(TDCBF_CANCEL_BUTTON); taskdlg.SetDefaultCommandControl(2); taskdlg.SetMainIcon(TD_WARNING_ICON); if (taskdlg.DoModal(m_hWnd) != 1) return; } UpdateData(TRUE); if (GetCheckedRadioButton(IDC_COPYHEAD, IDC_COPYREV) == IDC_COPYHEAD) m_CopyRev = SVNRev(SVNRev::REV_HEAD); else if (GetCheckedRadioButton(IDC_COPYHEAD, IDC_COPYREV) == IDC_COPYWC) m_CopyRev = SVNRev(SVNRev::REV_WC); else m_CopyRev = SVNRev(sRevText); if (!m_CopyRev.IsValid()) { ShowEditBalloon(IDC_COPYREVTEXT, IDS_ERR_INVALIDREV, IDS_ERR_ERROR, TTI_ERROR); return; } CString combourl = m_URLCombo.GetWindowString(); if (combourl.IsEmpty()) combourl = m_URLCombo.GetString(); if ((m_wcURL.CompareNoCase(combourl)==0)&&(m_CopyRev.IsHead())) { CString temp; temp.FormatMessage(IDS_ERR_COPYITSELF, (LPCTSTR)m_wcURL, (LPCTSTR)m_URLCombo.GetString()); ::MessageBox(this->m_hWnd, temp, L"TortoiseSVN", MB_ICONERROR); return; } m_URLCombo.SaveHistory(); m_URL = CPathUtils::CombineUrls(m_repoRoot, m_URLCombo.GetString()); if (!CTSVNPath(m_URL).IsValidOnWindows()) { CString sInfo; sInfo.Format(IDS_WARN_NOVALIDPATH_TASK1, (LPCTSTR)m_URL); CTaskDialog taskdlg(sInfo, CString(MAKEINTRESOURCE(IDS_WARN_NOVALIDPATH_TASK2)), L"TortoiseSVN", 0, TDF_ENABLE_HYPERLINKS | TDF_USE_COMMAND_LINKS | TDF_ALLOW_DIALOG_CANCELLATION | TDF_POSITION_RELATIVE_TO_WINDOW | TDF_SIZE_TO_CONTENT); taskdlg.AddCommandControl(1, CString(MAKEINTRESOURCE(IDS_WARN_NOVALIDPATH_TASK3))); taskdlg.AddCommandControl(2, CString(MAKEINTRESOURCE(IDS_WARN_NOVALIDPATH_TASK4))); taskdlg.SetCommonButtons(TDCBF_CANCEL_BUTTON); taskdlg.SetExpansionArea(CString(MAKEINTRESOURCE(IDS_WARN_NOVALIDPATH_TASK5))); taskdlg.SetDefaultCommandControl(2); taskdlg.SetMainIcon(TD_WARNING_ICON); if (taskdlg.DoModal(m_hWnd) != 1) return; } CStringUtils::WriteAsciiStringToClipboard(m_URL); // now let the bugtraq plugin check the commit message CComPtr<IBugTraqProvider2> pProvider2 = NULL; if (m_BugTraqProvider) { HRESULT hr = m_BugTraqProvider.QueryInterface(&pProvider2); if (SUCCEEDED(hr)) { ATL::CComBSTR temp; ATL::CComBSTR sourceURL; sourceURL.Attach(m_wcURL.AllocSysString()); ATL::CComBSTR parameters; parameters.Attach(m_bugtraq_association.GetParameters().AllocSysString()); ATL::CComBSTR targetURL; targetURL.Attach(m_URL.AllocSysString()); ATL::CComBSTR commitMessage; commitMessage.Attach(m_sLogMessage.AllocSysString()); CBstrSafeVector pathList(1); pathList.PutElement(0, m_path.GetSVNPathString()); hr = pProvider2->CheckCommit(GetSafeHwnd(), parameters, sourceURL, targetURL, pathList, commitMessage, &temp); if (FAILED(hr)) { OnComError(hr); } else { CString sError = temp == 0 ? L"" : temp; if (!sError.IsEmpty()) { CAppUtils::ReportFailedHook(m_hWnd, sError); return; } } } } CTSVNPathList checkedItems; checkedItems.AddPath(m_path); DWORD exitcode = 0; CString error; CHooks::Instance().SetProjectProperties(m_path, m_ProjectProperties); if (CHooks::Instance().CheckCommit(m_hWnd, checkedItems, m_sLogMessage, exitcode, error)) { if (exitcode) { CString sErrorMsg; sErrorMsg.Format(IDS_HOOK_ERRORMSG, (LPCWSTR)error); CTaskDialog taskdlg(sErrorMsg, CString(MAKEINTRESOURCE(IDS_HOOKFAILED_TASK2)), L"TortoiseSVN", 0, TDF_ENABLE_HYPERLINKS | TDF_USE_COMMAND_LINKS | TDF_ALLOW_DIALOG_CANCELLATION | TDF_POSITION_RELATIVE_TO_WINDOW | TDF_SIZE_TO_CONTENT); taskdlg.AddCommandControl(1, CString(MAKEINTRESOURCE(IDS_HOOKFAILED_TASK3))); taskdlg.AddCommandControl(2, CString(MAKEINTRESOURCE(IDS_HOOKFAILED_TASK4))); taskdlg.SetDefaultCommandControl(1); taskdlg.SetMainIcon(TD_ERROR_ICON); bool retry = (taskdlg.DoModal(GetSafeHwnd()) == 1); if (retry) return; } } if (!m_sLogMessage.IsEmpty()) { m_History.AddEntry(m_sLogMessage); m_History.Save(); } m_sBugID.Trim(); if (!m_sBugID.IsEmpty()) { m_sBugID.Replace(L", ", L","); m_sBugID.Replace(L" ,", L","); CString sBugID = m_ProjectProperties.sMessage; sBugID.Replace(L"%BUGID%", m_sBugID); if (m_ProjectProperties.bAppend) m_sLogMessage += L"\n" + sBugID + L"\n"; else m_sLogMessage = sBugID + L"\n" + m_sLogMessage; UpdateData(FALSE); } CResizableStandAloneDialog::OnOK(); }
void CInputLogDlg::OnOK() { UpdateData(); m_sLogMsg = m_cInput.GetText(); if (m_pProjectProperties) { CString id; GetDlgItemText(IDC_BUGID, id); id.Trim(_T("\n\r")); if (!m_bLock && !m_pProjectProperties->CheckBugID(id)) { ShowEditBalloon(IDC_BUGID, IDS_COMMITDLG_ONLYNUMBERS, TTI_ERROR); return; } if (!m_bLock && (m_pProjectProperties->bWarnIfNoIssue) && (id.IsEmpty() && !m_pProjectProperties->HasBugID(m_sLogMsg))) { if (CTaskDialog::IsSupported()) { CTaskDialog taskdlg(CString(MAKEINTRESOURCE(IDS_COMMITDLG_WARNNOISSUE_TASK1)), CString(MAKEINTRESOURCE(IDS_COMMITDLG_WARNNOISSUE_TASK2)), L"TortoiseSVN", 0, TDF_USE_COMMAND_LINKS|TDF_ALLOW_DIALOG_CANCELLATION|TDF_POSITION_RELATIVE_TO_WINDOW); taskdlg.AddCommandControl(1, CString(MAKEINTRESOURCE(IDS_COMMITDLG_WARNNOISSUE_TASK3))); taskdlg.AddCommandControl(2, CString(MAKEINTRESOURCE(IDS_COMMITDLG_WARNNOISSUE_TASK4))); taskdlg.SetCommonButtons(TDCBF_CANCEL_BUTTON); taskdlg.SetDefaultCommandControl(2); taskdlg.SetMainIcon(TD_WARNING_ICON); if (taskdlg.DoModal(m_hWnd) != 1) return; } else { if (TSVNMessageBox(this->m_hWnd, IDS_COMMITDLG_NOISSUEWARNING, IDS_APPNAME, MB_YESNO | MB_ICONWARNING)!=IDYES) return; } } m_sBugID.Trim(); CString sExistingBugID = m_pProjectProperties->FindBugID(m_sLogMsg); sExistingBugID.Trim(); if (!m_sBugID.IsEmpty() && m_sBugID.Compare(sExistingBugID)) { m_sBugID.Replace(_T(", "), _T(",")); m_sBugID.Replace(_T(" ,"), _T(",")); CString sBugID = m_pProjectProperties->sMessage; sBugID.Replace(_T("%BUGID%"), m_sBugID); if (m_pProjectProperties->bAppend) m_sLogMsg += _T("\n") + sBugID + _T("\n"); else m_sLogMsg = sBugID + _T("\n") + m_sLogMsg; } if (!m_bLock) { // now let the bugtraq plugin check the commit message CComPtr<IBugTraqProvider2> pProvider2 = NULL; if (m_BugTraqProvider) { HRESULT hr = m_BugTraqProvider.QueryInterface(&pProvider2); if (SUCCEEDED(hr)) { ATL::CComBSTR temp; CString common = m_rootpath.GetSVNPathString(); ATL::CComBSTR repositoryRoot; repositoryRoot.Attach(common.AllocSysString()); ATL::CComBSTR parameters; parameters.Attach(m_bugtraq_association.GetParameters().AllocSysString()); ATL::CComBSTR commonRoot(m_pathlist.GetCommonRoot().GetDirectory().GetWinPath()); ATL::CComBSTR commitMessage; commitMessage.Attach(m_sLogMsg.AllocSysString()); CBstrSafeVector pathList(m_pathlist.GetCount()); for (LONG index = 0; index < m_pathlist.GetCount(); ++index) pathList.PutElement(index, m_pathlist[index].GetSVNPathString()); hr = pProvider2->CheckCommit(GetSafeHwnd(), parameters, repositoryRoot, commonRoot, pathList, commitMessage, &temp); if (FAILED(hr)) { OnComError(hr); } else { CString sError = temp == 0 ? _T("") : temp; if (!sError.IsEmpty()) { CAppUtils::ReportFailedHook(m_hWnd, sError); return; } } } } } } CString reg; reg.Format(_T("Software\\TortoiseSVN\\History\\commit%s"), (LPCTSTR)m_sUUID); CRegHistory history; history.Load(reg, _T("logmsgs")); history.AddEntry(m_sLogMsg); history.Save(); CResizableStandAloneDialog::OnOK(); }
void CExportDlg::OnOK() { if (!UpdateData(TRUE)) return; // don't dismiss dialog (error message already shown by MFC framework) if (::IsWindow(m_pLogDlg->GetSafeHwnd())&&(m_pLogDlg->IsWindowVisible())) { m_pLogDlg->SendMessage(WM_CLOSE); return; } // check it the export path is a valid windows path CTSVNPath ExportDirectory; if (::PathIsRelative(m_strExportDirectory)) { ExportDirectory = CTSVNPath(sOrigCWD); ExportDirectory.AppendPathString(L"\\" + m_strExportDirectory); m_strExportDirectory = ExportDirectory.GetWinPathString(); } else ExportDirectory = CTSVNPath(m_strExportDirectory); if (!ExportDirectory.IsValidOnWindows()) { ShowEditBalloon(IDC_CHECKOUTDIRECTORY, IDS_ERR_NOVALIDPATH, IDS_ERR_ERROR, TTI_ERROR); return; } // check if the specified revision is valid if (GetCheckedRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N) == IDC_REVISION_HEAD) { Revision = SVNRev(L"HEAD"); } else Revision = SVNRev(m_sRevision); if (!Revision.IsValid()) { ShowEditBalloon(IDC_REVISION_NUM, IDS_ERR_INVALIDREV, IDS_ERR_ERROR, TTI_ERROR); return; } bool bAutoCreateTargetName = m_bAutoCreateTargetName; m_bAutoCreateTargetName = false; m_URLCombo.SaveHistory(); m_URL = m_URLCombo.GetString(); // we need an url to export from - local paths won't work if (!SVN::PathIsURL(CTSVNPath(m_URL))) { m_tooltips.ShowBalloon(IDC_URLCOMBO, IDS_ERR_MUSTBEURL, IDS_ERR_ERROR, TTI_ERROR); m_bAutoCreateTargetName = bAutoCreateTargetName; return; } if (m_strExportDirectory.IsEmpty()) { m_bAutoCreateTargetName = bAutoCreateTargetName; return; } // if the export directory does not exist, where should we export to? // We ask if the directory should be created... if (!PathFileExists(m_strExportDirectory)) { CPathUtils::MakeSureDirectoryPathExists(m_strExportDirectory); } // if the directory we should export to is not empty, show a warning: // maybe the user doesn't want to overwrite the existing files. if (!PathIsDirectoryEmpty(m_strExportDirectory)) { CString message; message.Format(CString(MAKEINTRESOURCE(IDS_WARN_FOLDERNOTEMPTY)),(LPCTSTR)m_strExportDirectory); CTaskDialog taskdlg(message, CString(MAKEINTRESOURCE(IDS_WARN_FOLDERNOTEMPTY_TASK2)), L"TortoiseSVN", 0, TDF_ENABLE_HYPERLINKS | TDF_USE_COMMAND_LINKS | TDF_ALLOW_DIALOG_CANCELLATION | TDF_POSITION_RELATIVE_TO_WINDOW | TDF_SIZE_TO_CONTENT); taskdlg.AddCommandControl(1, CString(MAKEINTRESOURCE(IDS_WARN_FOLDERNOTEMPTY_TASK3_1))); taskdlg.AddCommandControl(2, CString(MAKEINTRESOURCE(IDS_WARN_FOLDERNOTEMPTY_TASK4))); taskdlg.SetCommonButtons(TDCBF_CANCEL_BUTTON); taskdlg.SetDefaultCommandControl(2); taskdlg.SetMainIcon(TD_WARNING_ICON); bool doIt = (taskdlg.DoModal(GetExplorerHWND()) == 1); if (!doIt) { m_bAutoCreateTargetName = bAutoCreateTargetName; return; //don't dismiss the dialog } } m_eolCombo.GetWindowText(m_eolStyle); if (m_eolStyle.Compare(L"default")==0) m_eolStyle.Empty(); switch (m_depthCombo.GetCurSel()) { case 0: m_depth = svn_depth_infinity; break; case 1: m_depth = svn_depth_immediates; break; case 2: m_depth = svn_depth_files; break; case 3: m_depth = svn_depth_empty; break; default: m_depth = svn_depth_empty; break; } UpdateData(FALSE); CRegDWORD regNoExt(L"Software\\TortoiseSVN\\noext"); regNoExt = m_bNoExternals; CResizableStandAloneDialog::OnOK(); }
LRESULT CMergeWizardRevRange::OnWizardNext() { StopWCCheckThread(); UpdateData(); if (::IsWindow(m_pLogDlg->GetSafeHwnd())&&(m_pLogDlg->IsWindowVisible())) { m_pLogDlg->SendMessage(WM_CLOSE); return -1; } if (::IsWindow(m_pLogDlg2->GetSafeHwnd())&&(m_pLogDlg2->IsWindowVisible())) { m_pLogDlg2->SendMessage(WM_CLOSE); return -1; } CString sUrl; m_URLCombo.GetWindowText(sUrl); // check if the url has a revision appended to it and remove it if there is one auto atposurl = sUrl.ReverseFind('@'); if (atposurl >= 0) { CString sRev = sUrl.Mid(atposurl+1); SVNRev rev(sRev); if (rev.IsValid()) { ((CMergeWizard*)GetParent())->pegRev = rev; sUrl = sUrl.Left(atposurl); } } CTSVNPath url(sUrl); if (!url.IsUrl()) { ShowComboBalloon(&m_URLCombo, IDS_ERR_MUSTBEURL, IDS_ERR_ERROR, TTI_ERROR); return -1; } m_URLCombo.SaveHistory(); CString sRegKey = L"Software\\TortoiseSVN\\History\\repoURLS\\MergeURLFor" + ((CMergeWizard*)GetParent())->wcPath.GetSVNPathString(); CRegString regMergeUrlForWC(sRegKey); regMergeUrlForWC = sUrl; ((CMergeWizard*)GetParent())->URL1 = sUrl; ((CMergeWizard*)GetParent())->URL2 = sUrl; if (GetCheckedRadioButton(IDC_MERGERADIO_ALL, IDC_MERGERADIO_SPECIFIC)==IDC_MERGERADIO_ALL) m_sRevRange.Empty(); // if the revision range has HEAD as a revision specified, we have to // ask the server what the HEAD revision is: the SVNRevList can only deal // with numerical revisions because we have to sort the list to get the // ranges correctly if (m_sRevRange.Find(L"HEAD") >= 0) { if (!m_HEAD.IsValid()) { SVN svn; m_HEAD = svn.GetHEADRevision(CTSVNPath(((CMergeWizard*)GetParent())->URL1)); } m_sRevRange.Replace(L"HEAD", m_HEAD.ToString()); } int atpos = -1; if ((atpos = m_sRevRange.ReverseFind('@')) >= 0) { ((CMergeWizard*)GetParent())->pegRev = SVNRev(m_sRevRange.Mid(atpos+1)); m_sRevRange = m_sRevRange.Left(atpos); } if (!((CMergeWizard*)GetParent())->revRangeArray.FromListString(m_sRevRange)) { ShowEditBalloon(IDC_REVISION_RANGE, IDS_ERR_INVALIDREVRANGE, IDS_ERR_ERROR, TTI_ERROR); return -1; } return IDD_MERGEWIZARD_OPTIONS; }
void CEditPropBugtraq::OnOK() { m_tooltips.Pop(); // hide the tooltips UpdateData(); // check whether the entered regex strings are valid try { std::tr1::wregex r1 = std::tr1::wregex(m_sBugtraqRegex1); UNREFERENCED_PARAMETER(r1); } catch (std::exception) { ShowEditBalloon(IDC_BUGTRAQLOGREGEX1, IDS_ERR_INVALIDREGEX, IDS_ERR_ERROR); return; } try { std::tr1::wregex r2 = std::tr1::wregex(m_sBugtraqRegex2); UNREFERENCED_PARAMETER(r2); } catch (std::exception) { ShowEditBalloon(IDC_BUGTRAQLOGREGEX2, IDS_ERR_INVALIDREGEX, IDS_ERR_ERROR); return; } TProperties newProps; PropValue pVal; // bugtraq:url std::string propVal = CUnicodeUtils::StdGetUTF8((LPCTSTR)m_sBugtraqUrl); pVal.value = propVal; pVal.remove = (pVal.value.empty()); newProps[BUGTRAQPROPNAME_URL] = pVal; // bugtraq:warnifnoissue if (m_bWarnIfNoIssue) pVal.value = "true"; else pVal.value = ""; pVal.remove = (pVal.value.empty()); newProps[BUGTRAQPROPNAME_WARNIFNOISSUE] = pVal; // bugtraq:message propVal = CUnicodeUtils::StdGetUTF8((LPCTSTR)m_sBugtraqMessage); pVal.value = propVal; pVal.remove = (pVal.value.empty()); newProps[BUGTRAQPROPNAME_MESSAGE] = pVal; // bugtraq:label propVal = CUnicodeUtils::StdGetUTF8((LPCTSTR)m_sBugtraqLabel); pVal.value = propVal; pVal.remove = (pVal.value.empty()); newProps[BUGTRAQPROPNAME_LABEL] = pVal; // bugtraq:number int checked = GetCheckedRadioButton(IDC_TEXTRADIO, IDC_NUMERICRADIO); if (checked == IDC_TEXTRADIO) pVal.value = "false"; else pVal.value.clear(); pVal.remove = (pVal.value.empty()); newProps[BUGTRAQPROPNAME_NUMBER] = pVal; // bugtraq:append checked = GetCheckedRadioButton(IDC_TOPRADIO, IDC_BOTTOMRADIO); if (checked == IDC_TOPRADIO) pVal.value = "false"; else pVal.value.clear(); pVal.remove = (pVal.value.empty()); newProps[BUGTRAQPROPNAME_APPEND] = pVal; // bugtraq:logregex CString sLogRegex = m_sBugtraqRegex2 + _T("\n") + m_sBugtraqRegex1; if (m_sBugtraqRegex1.IsEmpty() && m_sBugtraqRegex2.IsEmpty()) sLogRegex.Empty(); if (m_sBugtraqRegex2.IsEmpty() && !m_sBugtraqRegex1.IsEmpty()) sLogRegex = m_sBugtraqRegex1; if (m_sBugtraqRegex1.IsEmpty() && !m_sBugtraqRegex2.IsEmpty()) sLogRegex = m_sBugtraqRegex2; propVal = CUnicodeUtils::StdGetUTF8((LPCTSTR)sLogRegex); pVal.value = propVal; pVal.remove = (pVal.value.empty()); newProps[BUGTRAQPROPNAME_LOGREGEX] = pVal; // bugtraq:providerparams propVal = CUnicodeUtils::StdGetUTF8((LPCTSTR)m_sProviderParams); pVal.value = propVal; pVal.remove = (pVal.value.empty()); newProps[BUGTRAQPROPNAME_PROVIDERPARAMS] = pVal; // bugtraq:provideruuid propVal = CUnicodeUtils::StdGetUTF8((LPCTSTR)m_sProviderUUID); pVal.value = propVal; pVal.remove = (pVal.value.empty()); newProps[BUGTRAQPROPNAME_PROVIDERUUID] = pVal; // bugtraq:provideruuid64 propVal = CUnicodeUtils::StdGetUTF8((LPCTSTR)m_sProviderUUID64); pVal.value = propVal; pVal.remove = (pVal.value.empty()); newProps[BUGTRAQPROPNAME_PROVIDERUUID64] = pVal; m_bChanged = true; m_properties = newProps; CResizableStandAloneDialog::OnOK(); }
void CRevisionRangeDlg::OnOK() { if (!UpdateData(TRUE)) return; // don't dismiss dialog (error message already shown by MFC framework) m_StartRev = SVNRev(m_sStartRevision); if (GetCheckedRadioButton(IDC_REVRANGE_HEAD, IDC_REVRANGE_DATE) == IDC_REVRANGE_HEAD) { m_StartRev = SVNRev(L"HEAD"); m_sStartRevision = L"HEAD"; } if (GetCheckedRadioButton(IDC_REVRANGE_HEAD, IDC_REVRANGE_DATE) == IDC_REVRANGE_DATE) { CTime _time; m_DateFrom.GetTime(_time); try { CTime time(_time.GetYear(), _time.GetMonth(), _time.GetDay(), 0, 0, 0); m_sStartRevision = time.FormatGmt(L"{%Y-%m-%d}"); m_StartRev = SVNRev(m_sStartRevision); } catch (CAtlException) { } } if ((!m_StartRev.IsValid())||((!m_bAllowWCRevs)&&(m_StartRev.IsPrev() || m_StartRev.IsCommitted() || m_StartRev.IsBase()))) { ShowEditBalloon(IDC_REVNUM, m_bAllowWCRevs ? IDS_ERR_INVALIDREV : IDS_ERR_INVALIDREVNOWC, IDS_ERR_ERROR, TTI_ERROR); return; } m_EndRev = SVNRev(m_sEndRevision); if (GetCheckedRadioButton(IDC_REVRANGE_HEAD2, IDC_REVRANGE_DATE2) == IDC_REVRANGE_HEAD2) { m_EndRev = SVNRev(L"HEAD"); m_sEndRevision = L"HEAD"; } if (GetCheckedRadioButton(IDC_REVRANGE_HEAD2, IDC_REVRANGE_DATE2) == IDC_REVRANGE_DATE2) { CTime _time; m_DateTo.GetTime(_time); try { CTime time(_time.GetYear(), _time.GetMonth(), _time.GetDay(), 23, 59, 59); m_sEndRevision = time.FormatGmt(L"{%Y-%m-%d}"); m_EndRev = SVNRev(m_sEndRevision); } catch (CAtlException) { } } if ((!m_EndRev.IsValid())||((!m_bAllowWCRevs)&&(m_EndRev.IsPrev() || m_EndRev.IsCommitted() || m_EndRev.IsBase()))) { ShowEditBalloon(IDC_REVNUM2, m_bAllowWCRevs ? IDS_ERR_INVALIDREV : IDS_ERR_INVALIDREVNOWC, IDS_ERR_ERROR, TTI_ERROR); return; } UpdateData(FALSE); CStandAloneDialog::OnOK(); }
BOOL CMergeWizardTree::CheckData(bool bShowErrors /* = true */) { if (!UpdateData(TRUE)) return FALSE; StartRev = SVNRev(m_sStartRev); EndRev = SVNRev(m_sEndRev); if (GetCheckedRadioButton(IDC_REVISION_HEAD1, IDC_REVISION_N1) == IDC_REVISION_HEAD1) { StartRev = SVNRev(L"HEAD"); } if (!StartRev.IsValid()) { if (bShowErrors) ShowEditBalloon(IDC_REVISION_START, IDS_ERR_INVALIDREV, IDS_ERR_ERROR, TTI_ERROR); return FALSE; } // if head revision, set revision as -1 if (GetCheckedRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N) == IDC_REVISION_HEAD) { EndRev = SVNRev(L"HEAD"); } if (!EndRev.IsValid()) { if (bShowErrors) ShowEditBalloon(IDC_REVISION_END, IDS_ERR_INVALIDREV, IDS_ERR_ERROR, TTI_ERROR); return FALSE; } CString sUrl; m_URLCombo.GetWindowText(sUrl); CTSVNPath url(sUrl); if (!url.IsUrl()) { ShowComboBalloon(&m_URLCombo, IDS_ERR_MUSTBEURL, IDS_ERR_ERROR, TTI_ERROR); return FALSE; } m_URLCombo2.GetWindowText(sUrl); CTSVNPath url2(sUrl); if (!url2.IsUrl()) { ShowComboBalloon(&m_URLCombo2, IDS_ERR_MUSTBEURL, IDS_ERR_ERROR, TTI_ERROR); return FALSE; } m_URLCombo.SaveHistory(); m_URLFrom = m_URLCombo.GetString(); m_URLCombo2.SaveHistory(); m_URLTo = m_URLCombo2.GetString(); CString sRegKeyFrom = L"Software\\TortoiseSVN\\History\\repoURLS\\MergeURLForFrom" + ((CMergeWizard*)GetParent())->wcPath.GetSVNPathString(); CRegString regMergeUrlForWCFrom(sRegKeyFrom); regMergeUrlForWCFrom = m_URLFrom; CString sRegKeyTo = L"Software\\TortoiseSVN\\History\\repoURLS\\MergeURLForTo" + ((CMergeWizard*)GetParent())->wcPath.GetSVNPathString(); CRegString regMergeUrlForWCTo(sRegKeyTo); regMergeUrlForWCTo = m_URLTo; ((CMergeWizard*)GetParent())->URL1 = m_URLFrom; ((CMergeWizard*)GetParent())->URL2 = m_URLTo; ((CMergeWizard*)GetParent())->startRev = StartRev; ((CMergeWizard*)GetParent())->endRev = EndRev; UpdateData(FALSE); return TRUE; }