void CWatchView::OnMouseDownR(wxGridEvent& event) { // popup menu int row = event.GetRow(); int col = event.GetCol(); m_selectedRow = row; if (col == 1 || col == 2) { wxString strNewVal = GetValueByRowCol(row, col); TryParse("0x" + WxStrToStr(strNewVal), &m_selectedAddress); } wxMenu menu; if (row != 0 && row != (int)(PowerPC::watches.GetWatches().size() + 1)) menu.Append(IDM_DELETEWATCH, _("&Delete watch")); if (row != 0 && row != (int)(PowerPC::watches.GetWatches().size() + 1) && (col == 1 || col == 2)) { menu.Append(IDM_ADDMEMCHECK, _("Add memory &breakpoint")); menu.Append(IDM_VIEWMEMORY, _("View &memory")); } PopupMenu(&menu); }
void CWatchView::OnMouseDownR(wxGridEvent& event) { // popup menu int row = event.GetRow(); int col = event.GetCol(); m_selectedRow = row; if (col == 1 || col == 2) { wxString strNewVal = GetValueByRowCol(row, col); TryParse("0x" + WxStrToStr(strNewVal), &m_selectedAddress); } wxMenu menu; if (row != 0 && row != static_cast<int>(PowerPC::debug_interface.GetWatches().size() + 1)) { // i18n: This kind of "watch" is used for watching emulated memory. // It's not related to timekeeping devices. menu.Append(IDM_DELETEWATCH, _("&Delete watch")); } if (row != 0 && row != static_cast<int>(PowerPC::debug_interface.GetWatches().size() + 1) && (col == 1 || col == 2)) { menu.Append(IDM_ADDMEMCHECK, _("Add memory &breakpoint")); menu.Append(IDM_VIEWMEMORY, _("View &memory")); } PopupMenu(&menu); }
void CRegisterView::OnMouseDownR(wxGridEvent& event) { // popup menu int row = event.GetRow(); int col = event.GetCol(); wxString strNewVal = GetValueByRowCol(row, col); TryParse("0x" + WxStrToStr(strNewVal), &m_selectedAddress); wxMenu menu; menu.Append(IDM_WATCHADDRESS, _("Add to &watch")); menu.Append(IDM_VIEWMEMORY, _("View &memory")); PopupMenu(&menu); }
void CWatchView::OnPopupMenu(wxCommandEvent& event) { // FIXME: This is terrible. Generate events instead. CFrame* cframe = wxGetApp().GetCFrame(); CCodeWindow* code_window = cframe->m_code_window; CWatchWindow* watch_window = code_window->GetPanel<CWatchWindow>(); CMemoryWindow* memory_window = code_window->GetPanel<CMemoryWindow>(); CBreakPointWindow* breakpoint_window = code_window->GetPanel<CBreakPointWindow>(); switch (event.GetId()) { case IDM_DELETEWATCH: { wxString strNewVal = GetValueByRowCol(m_selectedRow, 1); if (TryParse("0x" + WxStrToStr(strNewVal), &m_selectedAddress)) { PowerPC::debug_interface.UnsetWatch(m_selectedAddress); if (watch_window) watch_window->NotifyUpdate(); Refresh(); } break; } case IDM_ADDMEMCHECK: { TMemCheck MemCheck; MemCheck.start_address = m_selectedAddress; MemCheck.end_address = m_selectedAddress; MemCheck.is_ranged = false; MemCheck.is_break_on_read = true; MemCheck.is_break_on_write = true; MemCheck.log_on_hit = true; MemCheck.break_on_hit = true; PowerPC::memchecks.Add(MemCheck); if (breakpoint_window) breakpoint_window->NotifyUpdate(); Refresh(); break; } case IDM_VIEWMEMORY: if (memory_window) memory_window->JumpToAddress(m_selectedAddress); Refresh(); break; } event.Skip(); }
void CWatchView::OnPopupMenu(wxCommandEvent& event) { CFrame* main_frame = static_cast<CFrame*>(GetGrandParent()->GetParent()); CCodeWindow* code_window = main_frame->g_pCodeWindow; CWatchWindow* watch_window = code_window->m_WatchWindow; CMemoryWindow* memory_window = code_window->m_MemoryWindow; CBreakPointWindow* breakpoint_window = code_window->m_BreakpointWindow; wxString strNewVal; TMemCheck MemCheck; switch (event.GetId()) { case IDM_DELETEWATCH: strNewVal = GetValueByRowCol(m_selectedRow, 1); if (TryParse("0x" + WxStrToStr(strNewVal), &m_selectedAddress)) { PowerPC::watches.Remove(m_selectedAddress); if (watch_window) watch_window->NotifyUpdate(); Refresh(); } break; case IDM_ADDMEMCHECK: MemCheck.StartAddress = m_selectedAddress; MemCheck.EndAddress = m_selectedAddress; MemCheck.bRange = false; MemCheck.OnRead = true; MemCheck.OnWrite = true; MemCheck.Log = true; MemCheck.Break = true; PowerPC::memchecks.Add(MemCheck); if (breakpoint_window) breakpoint_window->NotifyUpdate(); Refresh(); break; case IDM_VIEWMEMORY: if (memory_window) memory_window->JumpToAddress(m_selectedAddress); Refresh(); break; } event.Skip(); }
wxString CWatchTable::GetValue(int row, int col) { return GetValueByRowCol(row, col); }