void XDebugManager::OnToggleBreakpoint(clDebugEvent& e) { if ( !PHPWorkspace::Get()->IsOpen() ) { e.Skip(); return; } // User toggled a breakpoint IEditor* editor = m_plugin->GetManager()->GetActiveEditor(); if ( editor && editor->GetFileName().GetFullPath() == e.GetFileName() ) { // Correct editor // add marker if ( m_breakpointsMgr.HasBreakpoint(e.GetFileName(), e.GetInt()) ) { XDebugBreakpoint bp; m_breakpointsMgr.GetBreakpoint(e.GetFileName(), e.GetInt(), bp); if ( bp.IsApplied() && m_readerThread ) { // Remove it from XDebug as well DoDeleteBreakpoint( bp.GetBreakpointId() ); } m_breakpointsMgr.DeleteBreakpoint( e.GetFileName(), e.GetInt() ); } else { m_breakpointsMgr.AddBreakpoint( e.GetFileName(), e.GetInt() ); DoApplyBreakpoints(); } DoRefreshBreakpointsMarkersForEditor( editor ); } }
void PHPDebugPane::OnBreakpointItemActivated(wxDataViewEvent& event) { XDebugBreakpoint bp = GetBreakpoint(event.GetItem()); PHPEvent eventOpenFile(wxEVT_PHP_BREAKPOINT_ITEM_ACTIVATED); eventOpenFile.SetLineNumber(bp.GetLine()); eventOpenFile.SetFileName(bp.GetFileName()); EventNotifier::Get()->AddPendingEvent(eventOpenFile); }
void PHPDebugPane::OnDeleteBreakpoint(wxCommandEvent& event) { wxUnusedVar(event); // Send event for every breakpoint id wxDataViewItemArray items; m_dvListCtrlBreakpoints->GetSelections(items); for(size_t i = 0; i < items.GetCount(); ++i) { XDebugBreakpoint bp = GetBreakpoint(items.Item(i)); PHPEvent eventDelBP(wxEVT_PHP_DELETE_BREAKPOINT); eventDelBP.SetInt(bp.GetBreakpointId()); eventDelBP.SetFileName(bp.GetFileName()); eventDelBP.SetLineNumber(bp.GetLine()); EventNotifier::Get()->AddPendingEvent(eventDelBP); } }