1 /* 2 * This file is part of the Code::Blocks IDE and licensed under the GNU General Public License, version 3 3 * http://www.gnu.org/licenses/gpl-3.0.html 4 */ 5 6 #ifndef X_DEBUGGER_MENU_H 7 #define X_DEBUGGER_MENU_H 8 9 #include <wx/event.h> 10 #include <cbdebugger_interfaces.h> 11 12 class cbDebuggerPlugin; 13 class wxToolBar; 14 15 class DebuggerMenuHandler : public wxEvtHandler, public cbDebuggerMenuHandler 16 { 17 public: 18 DebuggerMenuHandler(); 19 20 void RegisterDefaultWindowItems(); 21 void AppendWindowMenuItems(wxMenu &menu); 22 23 public: // derived from cbDebuggerMenuHandler 24 virtual void SetActiveDebugger(cbDebuggerPlugin *active); 25 virtual void MarkActiveTargetAsValid(bool valid); 26 virtual void RebuildMenus(); 27 virtual void BuildContextMenu(wxMenu &menu, const wxString& word_at_caret, bool is_running); 28 29 virtual bool RegisterWindowMenu(const wxString &name, const wxString &help, cbDebuggerWindowMenuItem *item); 30 virtual void UnregisterWindowMenu(const wxString &name); 31 private: 32 void OnUpdateUI(wxUpdateUIEvent& event); 33 void OnStart(wxCommandEvent& event); 34 void OnBreak(wxCommandEvent& event); 35 void OnStop(wxCommandEvent& event); 36 37 void OnContinue(wxCommandEvent& event); 38 void OnNext(wxCommandEvent& event); 39 void OnNextInstr(wxCommandEvent& event); 40 void OnStepIntoInstr(wxCommandEvent& event); 41 void OnStep(wxCommandEvent& event); 42 void OnStepOut(wxCommandEvent& event); 43 void OnRunToCursor(wxCommandEvent& event); 44 void OnSetNextStatement(wxCommandEvent& event); 45 46 void OnToggleBreakpoint(wxCommandEvent& event); 47 void OnRemoveAllBreakpoints(wxCommandEvent& event); 48 void OnAddDataBreakpoint(wxCommandEvent& event); 49 void OnSendCommand(wxCommandEvent& event); 50 void OnAttachToProcess(wxCommandEvent& event); 51 void OnDetachFromProcess(wxCommandEvent& event); 52 void OnAddWatch(wxCommandEvent& event); 53 54 void OnActiveDebuggerClick(wxCommandEvent& event); 55 void OnActiveDebuggerTargetsDefaultClick(wxCommandEvent& event); 56 57 void LogActiveConfig(); 58 59 void OnWindowMenuItemUpdateUI(wxUpdateUIEvent &event); 60 void OnWindowMenuItemClicked(wxCommandEvent &event); 61 62 DECLARE_EVENT_TABLE(); 63 private: 64 struct WindowMenuItem 65 { 66 cb::shared_ptr<cbDebuggerWindowMenuItem> item; 67 wxString name, help; 68 }; 69 typedef std::map<long, WindowMenuItem> WindowMenuItemsMap; 70 private: 71 WindowMenuItemsMap m_windowMenuItems; 72 cbDebuggerPlugin* m_activeDebugger; 73 wxString m_lastCommand; 74 bool m_disableContinue; 75 }; 76 77 class DebuggerToolbarHandler : public wxEvtHandler 78 { 79 friend class DebuggerManager; 80 public: 81 DebuggerToolbarHandler(DebuggerMenuHandler *menuHandler); 82 wxToolBar* GetToolbar(bool create = true); 83 private: 84 void OnUpdateUI(wxUpdateUIEvent& event); 85 void OnToolInfo(wxCommandEvent& event); 86 void OnDebugWindows(wxCommandEvent& event); 87 void OnStop(wxCommandEvent& event); 88 89 wxToolBar *m_Toolbar; 90 DebuggerMenuHandler *m_menuHandler; 91 92 DECLARE_EVENT_TABLE(); 93 }; 94 95 #endif // X_DEBUGGER_MENU_H 96 97