summaryrefslogtreecommitdiff
path: root/Source/Core/DebuggerWX/Src/MemoryView.cpp
diff options
context:
space:
mode:
authorhrydgard <hrydgard@gmail.com>2009-07-12 10:08:59 +0000
committerhrydgard <hrydgard@gmail.com>2009-07-12 10:08:59 +0000
commitb363b2ddc8a3731312a282569a3259dac10507d6 (patch)
tree4401fdf8b2359eadda0406d452fb05507a9e16cb /Source/Core/DebuggerWX/Src/MemoryView.cpp
parentf324d4b27dce358b7824c445b2f2f3ac14f20dd2 (diff)
More UCode RE. Move MemoryView to DebuggerUICommon.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3762 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/DebuggerWX/Src/MemoryView.cpp')
-rw-r--r--Source/Core/DebuggerWX/Src/MemoryView.cpp319
1 files changed, 0 insertions, 319 deletions
diff --git a/Source/Core/DebuggerWX/Src/MemoryView.cpp b/Source/Core/DebuggerWX/Src/MemoryView.cpp
deleted file mode 100644
index 0a3d2193cd..0000000000
--- a/Source/Core/DebuggerWX/Src/MemoryView.cpp
+++ /dev/null
@@ -1,319 +0,0 @@
-// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#include "Debugger.h"
-#include "Common.h"
-
-#include "MemoryView.h"
-#include <wx/event.h>
-#include <wx/clipbrd.h>
-
-
-enum
-{
- IDM_GOTOINMEMVIEW = 12000,
- IDM_COPYADDRESS,
- IDM_COPYHEX,
- IDM_COPYCODE,
- IDM_RUNTOHERE,
- IDM_DYNARECRESULTS,
- IDM_TOGGLEMEMORY,
-};
-
-
-BEGIN_EVENT_TABLE(CMemoryView, wxControl)
-EVT_ERASE_BACKGROUND(CMemoryView::OnErase)
-EVT_PAINT(CMemoryView::OnPaint)
-EVT_LEFT_DOWN(CMemoryView::OnMouseDown)
-EVT_LEFT_UP(CMemoryView::OnMouseUpL)
-EVT_MOTION(CMemoryView::OnMouseMove)
-EVT_RIGHT_DOWN(CMemoryView::OnMouseDown)
-EVT_RIGHT_UP(CMemoryView::OnMouseUpR)
-EVT_MENU(-1, CMemoryView::OnPopupMenu)
-END_EVENT_TABLE()
-
-CMemoryView::CMemoryView(DebugInterface* debuginterface, wxWindow* parent, wxWindowID Id, const wxSize& Size)
- : wxControl(parent, Id, wxDefaultPosition, Size),
- debugger(debuginterface),
- rowHeight(13),
- selection(0),
- oldSelection(0),
- selectionChanged(false),
- selecting(false),
- hasFocus(false),
- showHex(false),
- memory(0)
-{
- rowHeight = 13;
- align = debuginterface->getInstructionSize(0);
- curAddress = debuginterface->getPC();
-}
-
-
-wxSize CMemoryView::DoGetBestSize() const
-{
- wxSize bestSize;
- bestSize.x = 300;
- bestSize.y = 300;
- return(bestSize);
-}
-
-
-int CMemoryView::YToAddress(int y)
-{
- wxRect rc = GetClientRect();
- int ydiff = y - rc.height / 2 - rowHeight / 2;
- ydiff = (int)(floorf((float)ydiff / (float)rowHeight)) + 1;
- return(curAddress + ydiff * align);
-}
-
-
-void CMemoryView::OnMouseDown(wxMouseEvent& event)
-{
- int x = event.m_x;
- int y = event.m_y;
-
- if (x > 16)
- {
- oldSelection = selection;
- selection = YToAddress(y);
- // SetCapture(wnd);
- bool oldselecting = selecting;
- selecting = true;
-
- if (!oldselecting || (selection != oldSelection))
- {
- redraw();
- }
- }
- else
- {
- debugger->toggleBreakpoint(YToAddress(y));
- redraw();
- }
-
- event.Skip(true);
-}
-
-
-void CMemoryView::OnMouseMove(wxMouseEvent& event)
-{
- wxRect rc = GetClientRect();
-
- if (event.m_leftDown)
- {
- if (event.m_x > 16)
- {
- if (event.m_y < 0)
- {
- curAddress -= align;
- redraw();
- }
- else if (event.m_y > rc.height)
- {
- curAddress += align;
- redraw();
- }
- else
- {
- OnMouseDown(event);
- }
- }
- }
-
- event.Skip(true);
-}
-
-
-void CMemoryView::OnMouseUpL(wxMouseEvent& event)
-{
- if (event.m_x > 16)
- {
- curAddress = YToAddress(event.m_y);
- selecting = false;
- //ReleaseCapture();
- redraw();
- }
-
- event.Skip(true);
-}
-
-
-void CMemoryView::OnPopupMenu(wxCommandEvent& event)
-{
-#if wxUSE_CLIPBOARD
- wxTheClipboard->Open();
-#endif
-
- switch (event.GetId())
- {
-#if wxUSE_CLIPBOARD
- case IDM_COPYADDRESS:
- {
- wxTheClipboard->SetData(new wxTextDataObject(wxString::Format(_T("%08x"), selection)));
- }
- break;
-
- case IDM_COPYHEX:
- {
- char temp[24];
- sprintf(temp, "%08x", debugger->readExtraMemory(memory, selection));
- wxTheClipboard->SetData(new wxTextDataObject(wxString::FromAscii(temp)));
- }
- break;
-
- case IDM_TOGGLEMEMORY:
- memory ^= 1;
- redraw();
- break;
-#endif
- }
-
-#if wxUSE_CLIPBOARD
- wxTheClipboard->Close();
-#endif
- event.Skip(true);
-}
-
-
-void CMemoryView::OnMouseUpR(wxMouseEvent& event)
-{
- // popup menu
- wxMenu menu;
- //menu.Append(IDM_GOTOINMEMVIEW, "&Goto in mem view");
-#if wxUSE_CLIPBOARD
- menu.Append(IDM_COPYADDRESS, wxString::FromAscii("Copy &address"));
- menu.Append(IDM_COPYHEX, wxString::FromAscii("Copy &hex"));
-#endif
- menu.Append(IDM_TOGGLEMEMORY, wxString::FromAscii("Toggle &memory (RAM/ARAM)"));
- PopupMenu(&menu);
- event.Skip(true);
-}
-
-
-void CMemoryView::OnErase(wxEraseEvent& event)
-{}
-
-
-void CMemoryView::OnPaint(wxPaintEvent& event)
-{
- wxPaintDC dc(this);
- wxRect rc = GetClientRect();
- dc.SetFont(DebuggerFont);
- int fontSize = DebuggerFont.GetPointSize();
- struct branch
- {
- int src, dst, srcAddr;
- };
-
- // branch branches[256]; // TODO: This is not being used
- int numBranches = 0;
- // TODO: Add any drawing code here...
- int width = rc.width;
- int numRows = (rc.height / rowHeight) / 2 + 2;
- //numRows=(numRows&(~1)) + 1;
- dc.SetBackgroundMode(wxTRANSPARENT);
- const wxChar* bgColor = _T("#ffffff");
- wxPen nullPen(bgColor);
- wxPen currentPen(_T("#000000"));
- wxPen selPen(_T("#808080")); // gray
- nullPen.SetStyle(wxTRANSPARENT);
-
- wxBrush currentBrush(_T("#FFEfE8")); // light gray
- wxBrush pcBrush(_T("#70FF70")); // green
- wxBrush bpBrush(_T("#FF3311")); // red
- wxBrush bgBrush(bgColor);
- wxBrush nullBrush(bgColor);
- nullBrush.SetStyle(wxTRANSPARENT);
-
- dc.SetPen(nullPen);
- dc.SetBrush(bgBrush);
- dc.DrawRectangle(0, 0, 16, rc.height);
- dc.DrawRectangle(0, 0, rc.width, 5+8);
- // TODO - clean up this freaking mess!!!!!
- int i;
-
- for (i = -numRows; i <= numRows; i++)
- {
- unsigned int address = curAddress + i * align;
-
- int rowY1 = rc.height / 2 + rowHeight * i - rowHeight / 2;
- int rowY2 = rc.height / 2 + rowHeight * i + rowHeight / 2;
-
- wxString temp = wxString::Format(_T("%08x"), address);
- u32 col = debugger->getColor(address);
- wxBrush rowBrush(wxColor(col >> 16, col >> 8, col));
- dc.SetBrush(nullBrush);
- dc.SetPen(nullPen);
- dc.DrawRectangle(0, rowY1, 16, rowY2);
-
- if (selecting && (address == selection))
- {
- dc.SetPen(selPen);
- }
- else
- {
- dc.SetPen(i == 0 ? currentPen : nullPen);
- }
-
- if (address == debugger->getPC())
- {
- dc.SetBrush(pcBrush);
- }
- else
- {
- dc.SetBrush(rowBrush);
- }
-
- dc.DrawRectangle(16, rowY1, width, rowY2 - 1);
- dc.SetBrush(currentBrush);
- dc.SetTextForeground(_T("#600000"));
- dc.DrawText(temp, 17, rowY1);
- char mem[256];
- debugger->getRawMemoryString(memory, address, mem, 256);
- dc.SetTextForeground(_T("#000080"));
- dc.DrawText(wxString::FromAscii(mem), 17+fontSize*(8), rowY1);
- dc.SetTextForeground(_T("#000000"));
-
- if (debugger->isAlive())
- {
- char dis[256] = {0};
- u32 mem = debugger->readExtraMemory(memory, address);
- float flt = *(float *)(&mem);
- sprintf(dis, "f: %f", flt);
- char desc[256] = "";
-
- dc.DrawText(wxString::FromAscii(dis), 77 + fontSize*(8 + 8), rowY1);
-
- if (desc[0] == 0)
- {
- strcpy(desc, debugger->getDescription(address).c_str());
- }
-
- dc.SetTextForeground(_T("#0000FF"));
-
- if (strlen(desc))
- {
- dc.DrawText(wxString::FromAscii(desc), 17+fontSize*(8+8+8+30), rowY1);
- }
- }
- }
-
- dc.SetPen(currentPen);
-}
-
-