void cbDebuggerPlugin::OnCompilerFinished(cb_unused CodeBlocksEvent& event) { if (m_WaitingCompilerToFinish) { m_WaitingCompilerToFinish = false; bool compilerFailed = false; // only proceed if build succeeeded if (m_pCompiler && m_pCompiler->GetExitCode() != 0) { AnnoyingDialog dlg(_("Debug anyway?"), _("Build failed, do you want to debug the program?"), wxART_QUESTION, AnnoyingDialog::YES_NO, AnnoyingDialog::rtNO); if (dlg.ShowModal() != AnnoyingDialog::rtYES) { ProjectManager *manager = Manager::Get()->GetProjectManager(); if (manager->GetIsRunning() && manager->GetIsRunning() == this) manager->SetIsRunning(nullptr); compilerFailed = true; } } ShowLog(false); if (!CompilerFinished(compilerFailed, m_StartType)) { ProjectManager *manager = Manager::Get()->GetProjectManager(); if (manager->GetIsRunning() && manager->GetIsRunning() == this) manager->SetIsRunning(nullptr); } } }
void DebuggerMenuHandler::OnStep(cb_unused wxCommandEvent& event) { cbAssert(m_activeDebugger); if (m_activeDebugger->IsRunning()) { if(!m_disableContinue) { HideValueTooltip(); m_activeDebugger->Step(); } } else { m_disableContinue = true; ProjectManager *manager = Manager::Get()->GetProjectManager(); if (manager->GetIsRunning() == nullptr) { manager->SetIsRunning(m_activeDebugger); m_activeDebugger->ClearLog(); LogActiveConfig(); if (!m_activeDebugger->Debug(true)) manager->SetIsRunning(nullptr); } m_disableContinue = false; } }
void DebuggerMenuHandler::OnRunToCursor(cb_unused wxCommandEvent& event) { cbAssert(m_activeDebugger); cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor(); if (!ed) return; const wxString &line_text = ed->GetControl()->GetLine(ed->GetControl()->GetCurrentLine()); ProjectManager *manager = Manager::Get()->GetProjectManager(); if (manager->GetIsRunning() == nullptr || manager->GetIsRunning() == m_activeDebugger) { manager->SetIsRunning(m_activeDebugger); if (!m_activeDebugger->IsRunning()) { m_activeDebugger->ClearLog(); LogActiveConfig(); } HideValueTooltip(); if (!m_activeDebugger->RunToCursor(ed->GetFilename(), ed->GetControl()->GetCurrentLine() + 1, line_text)) manager->SetIsRunning(nullptr); } }