void DebuggerMenuHandler::BuildContextMenu(wxMenu &menu, const wxString& word_at_caret, bool is_running) { cbDebuggerPlugin *plugin = Manager::Get()->GetDebuggerManager()->GetActiveDebugger(); if (!plugin) return; int item = 0; // Insert Run to Cursor if (plugin->SupportsFeature(cbDebuggerFeature::RunToCursor)) menu.Insert(item++, idMenuRunToCursor, _("Run to cursor")); if (is_running) { if (plugin->SupportsFeature(cbDebuggerFeature::SetNextStatement)) menu.Insert(item++, idMenuSetNextStatement, _("Set next statement")); if (item > 0) menu.InsertSeparator(item++); if (!word_at_caret.empty()) { if (plugin->SupportsFeature(cbDebuggerFeature::Watches)) menu.Insert(item++, idMenuDebuggerAddWatch, wxString::Format(_("Watch '%s'"), word_at_caret.c_str())); // data breakpoint if (plugin->SupportsFeature(cbDebuggerFeature::Breakpoints)) { menu.Insert(item++, idMenuAddDataBreakpoint, wxString::Format(_("Add data breakpoint for '%s'"), word_at_caret.c_str())); } } } // Insert toggle breakpoint if (plugin->SupportsFeature(cbDebuggerFeature::Breakpoints)) menu.Insert(item++, idMenuToggleBreakpoint, _("Toggle breakpoint")); if (item > 0) menu.InsertSeparator(item++); }
void DebuggerMenuHandler::BuildContextMenu(wxMenu &menu, const wxString& word_at_caret, bool is_running) { cbDebuggerPlugin *plugin = Manager::Get()->GetDebuggerManager()->GetActiveDebugger(); if (!plugin) return; PluginManager *pluginManager = Manager::Get()->GetPluginManager(); int initialItem; if (is_running) { // we want debugger menu items to be at the top when debugging initialItem = pluginManager->GetFindMenuItemFirst(); } else initialItem = pluginManager->GetFindMenuItemFirst() + pluginManager->GetFindMenuItemCount(); int item = initialItem; // Insert Run to Cursor if (plugin->SupportsFeature(cbDebuggerFeature::RunToCursor)) menu.Insert(item++, idMenuRunToCursor, _("Run to cursor")); if (is_running) { if (plugin->SupportsFeature(cbDebuggerFeature::SetNextStatement)) menu.Insert(item++, idMenuSetNextStatement, _("Set next statement")); if (item > 0) menu.InsertSeparator(item++); if (!word_at_caret.empty()) { if (plugin->SupportsFeature(cbDebuggerFeature::Watches)) menu.Insert(item++, idMenuDebuggerAddWatch, wxString::Format(_("Watch '%s'"), word_at_caret.c_str())); // data breakpoint if (plugin->SupportsFeature(cbDebuggerFeature::Breakpoints)) { menu.Insert(item++, idMenuAddDataBreakpoint, wxString::Format(_("Add data breakpoint for '%s'"), word_at_caret.c_str())); } } } // Insert toggle breakpoint if (plugin->SupportsFeature(cbDebuggerFeature::Breakpoints)) menu.Insert(item++, idMenuToggleBreakpoint, _("Toggle breakpoint")); if (item > 0) menu.InsertSeparator(item++); if (is_running) pluginManager->RegisterFindMenuItems(true, item - initialItem); }