void CtrlRegisterList::onPopupClick(wxCommandEvent& evt)
{
	switch (evt.GetId())
	{
	case ID_REGISTERLIST_DISPLAY32:
		maxBits = 32;
		SetBestSize(ClientToWindowSize(GetMinClientSize()));
		postEvent(debEVT_UPDATELAYOUT,0);
		Refresh();
		break;
	case ID_REGISTERLIST_DISPLAY64:
		maxBits = 64;
		SetBestSize(ClientToWindowSize(GetMinClientSize()));
		postEvent(debEVT_UPDATELAYOUT,0);
		Refresh();
		break;
	case ID_REGISTERLIST_DISPLAY128:
		maxBits = 128;
		SetBestSize(ClientToWindowSize(GetMinClientSize()));
		postEvent(debEVT_UPDATELAYOUT,0);
		Refresh();
		break;
	default:
		wxMessageBox( L"Unimplemented.",  L"Unimplemented.", wxICON_INFORMATION);
		break;
	}
}
void CtrlRegisterList::onPopupClick(wxCommandEvent& evt)
{
	switch (evt.GetId())
	{
	case ID_REGISTERLIST_DISPLAY32:
		resolvePointerStrings = false;
		maxBits = 32;
		SetInitialSize(ClientToWindowSize(GetMinClientSize()));
		postEvent(debEVT_UPDATELAYOUT,0);
		Refresh();
		break;
	case ID_REGISTERLIST_DISPLAY64:
		resolvePointerStrings = false;
		maxBits = 64;
		SetInitialSize(ClientToWindowSize(GetMinClientSize()));
		postEvent(debEVT_UPDATELAYOUT,0);
		Refresh();
		break;
	case ID_REGISTERLIST_DISPLAY128:
		resolvePointerStrings = false;
		maxBits = 128;
		SetInitialSize(ClientToWindowSize(GetMinClientSize()));
		postEvent(debEVT_UPDATELAYOUT,0);
		Refresh();
		break;
	case ID_REGISTERLIST_DISPLAY128STRINGS:
		resolvePointerStrings = true;
		maxBits = 128;
		SetInitialSize(ClientToWindowSize(GetMinClientSize()));
		postEvent(debEVT_UPDATELAYOUT, 0);
		Refresh();
		break;
	case ID_REGISTERLIST_CHANGELOWER:
		changeValue(LOWER64);
		Refresh();
		break;
	case ID_REGISTERLIST_CHANGEUPPER:
		changeValue(UPPER64);
		Refresh();
		break;
	case ID_REGISTERLIST_CHANGEVALUE:
		if (cpu->getRegisterSize(category) == 32)
			changeValue(CHANGE32);
		else
			changeValue(LOWER64);
		Refresh();
		break;
	case ID_REGISTERLIST_GOTOINMEMORYVIEW:
		postEvent(debEVT_GOTOINMEMORYVIEW, cpu->getRegister(category, currentRows[category])._u32[0]);
		break;
	case ID_REGISTERLIST_GOTOINDISASM:
		postEvent(debEVT_GOTOINDISASM, cpu->getRegister(category, currentRows[category])._u32[0]);
		break;
	default:
		wxMessageBox( L"Unimplemented.",  L"Unimplemented.", wxICON_INFORMATION);
		break;
	}
}
Exemple #3
0
wxSize wxStaticBox::DoGetBestSize() const
{
    wxSize best;

    // Calculate the size needed by the label
    int cx, cy;
    wxGetCharSize(GetHWND(), &cx, &cy, GetFont());

    int wBox;
    GetTextExtent(GetLabelText(wxGetWindowText(m_hWnd)), &wBox, &cy);

    wBox += 3*cx;
    int hBox = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy);

    // If there is a sizer then the base best size is the sizer's minimum
    if (GetSizer() != NULL)
    {
        wxSize cm(GetSizer()->CalcMin());
        best = ClientToWindowSize(cm);
        // adjust for a long label if needed
        best.x = wxMax(best.x, wBox);
    }
    // otherwise the best size falls back to the label size
    else
    {
        best = wxSize(wBox, hBox);
    }
    return best;
}
Exemple #4
0
CtrlRegisterList::CtrlRegisterList(wxWindow* parent, DebugInterface* _cpu)
	: wxScrolledWindow(parent,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxWANTS_CHARS|wxBORDER_NONE|wxVSCROLL), cpu(_cpu)
{
	rowHeight = getDebugFontHeight()+2;
	charWidth = getDebugFontWidth();
	category  = 0;
	maxBits   = 128;
	lastPc    = 0xFFFFFFFF;

	for (int i = 0; i < cpu->getRegisterCategoryCount(); i++)
	{
		int count = cpu->getRegisterCount(i);

		ChangedReg* regs = new ChangedReg[count];
		memset(regs,0,sizeof(ChangedReg)*count);
		changedCategories.push_back(regs);

		int maxLen = 0;
		for (int k = 0; k < cpu->getRegisterCount(i); k++)
		{
			maxLen = std::max<int>(maxLen,strlen(cpu->getRegisterName(i,k)));
		}

		int x = 17+(maxLen+2)*charWidth;
		startPositions.push_back(x);
		currentRows.push_back(0);
	}

	SetDoubleBuffered(true);
	SetInitialSize(ClientToWindowSize(GetMinClientSize()));

	wxSize actualSize = getOptimalSize();
	SetVirtualSize(actualSize);
	SetScrollbars(1, rowHeight, actualSize.x, actualSize.y / rowHeight, 0, 0);
}
Exemple #5
0
void CtrlRegisterList::onPopupClick(wxCommandEvent& evt)
{
	switch (evt.GetId())
	{
	case ID_REGISTERLIST_DISPLAY32:
		maxBits = 32;
		SetInitialSize(ClientToWindowSize(GetMinClientSize()));
		postEvent(debEVT_UPDATELAYOUT,0);
		Refresh();
		break;
	case ID_REGISTERLIST_DISPLAY64:
		maxBits = 64;
		SetInitialSize(ClientToWindowSize(GetMinClientSize()));
		postEvent(debEVT_UPDATELAYOUT,0);
		Refresh();
		break;
	case ID_REGISTERLIST_DISPLAY128:
		maxBits = 128;
		SetInitialSize(ClientToWindowSize(GetMinClientSize()));
		postEvent(debEVT_UPDATELAYOUT,0);
		Refresh();
		break;
	case ID_REGISTERLIST_CHANGELOWER:
		changeValue(LOWER64);
		Refresh();
		break;
	case ID_REGISTERLIST_CHANGEUPPER:
		changeValue(UPPER64);
		Refresh();
		break;
	case ID_REGISTERLIST_CHANGEVALUE:
		if (cpu->getRegisterSize(category) == 32)
			changeValue(CHANGE32);
		else
			changeValue(LOWER64);
		Refresh();
		break;
	default:
		wxMessageBox( L"Unimplemented.",  L"Unimplemented.", wxICON_INFORMATION);
		break;
	}
}
CtrlRegisterList::CtrlRegisterList(wxWindow* parent, DebugInterface* _cpu)
	: wxWindow(parent,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxWANTS_CHARS|wxBORDER), cpu(_cpu)
{
	rowHeight = 14;
	charWidth = 8;
	category = 0;
	maxBits = 128;

	for (int i = 0; i < cpu->getRegisterCategoryCount(); i++)
	{
		int count = cpu->getRegisterCount(i);

		ChangedReg* regs = new ChangedReg[count];
		memset(regs,0,sizeof(ChangedReg)*count);
		changedCategories.push_back(regs);

		int maxLen = 0;
		for (int k = 0; k < cpu->getRegisterCount(i); k++)
		{
			maxLen = std::max<int>(maxLen,strlen(cpu->getRegisterName(i,k)));
		}

		int x = 17+(maxLen+3)*charWidth;
		startPositions.push_back(x);
		currentRows.push_back(0);
	}

	menu.AppendRadioItem(ID_REGISTERLIST_DISPLAY32,		L"Display 32 bit");
	menu.AppendRadioItem(ID_REGISTERLIST_DISPLAY64,		L"Display 64 bit");
	menu.AppendRadioItem(ID_REGISTERLIST_DISPLAY128,	L"Display 128 bit");
	menu.Check(ID_REGISTERLIST_DISPLAY128,true);
	menu.Connect(wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction)&CtrlRegisterList::onPopupClick, NULL, this);

	SetDoubleBuffered(true);
	SetInitialBestSize(ClientToWindowSize(GetMinClientSize()));
}