void CscopePlugin::BuildModuleMenu(const ModuleType type, wxMenu* menu, const FileTreeData* /*data*/) { if ( !IsAttached() || m_pProcess) return; if(type != mtEditorManager || !menu ) return; EditorManager* emngr = Manager::Get()->GetEditorManager(); if ( !emngr ) return; EditorBase *edb = emngr->GetActiveEditor(); if ( !edb || !edb->IsBuiltinEditor() ) return; cbStyledTextCtrl* stc = ((cbEditor*)edb)->GetControl(); if ( !stc ) return; if ( stc->GetLexer() != wxSCI_LEX_CPP) return; wxString word = GetWordAtCaret(); if ( word.IsEmpty() ) return; PluginManager *pluginManager = Manager::Get()->GetPluginManager(); int idximp = pluginManager->GetFindMenuItemFirst() + pluginManager->GetFindMenuItemCount(); menu->Insert(idximp++, idOnFindFunctionsCalledByThisFuncion, _("Find functions called by '") + word + _T("'")); menu->Insert(idximp++, idOnFindFunctionsCallingThisFunction, _("Find functions calling '") + word + _T("'")); pluginManager->RegisterFindMenuItems(false, 2); }
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); }