mirror of
https://github.com/jpd002/Play-.git
synced 2025-04-29 14:07:58 +03:00

Fixed TR1 compilance. Input configuration support for Win32. Support for analog axis in PadMan. git-svn-id: http://svn.purei.org/purei/trunk@361 b36208d7-6611-0410-8bec-b1987f11c4a2
133 lines
3 KiB
C++
133 lines
3 KiB
C++
#include <boost/bind.hpp>
|
|
#include "RegViewWnd.h"
|
|
#include "RegViewGeneral.h"
|
|
#include "RegViewSCU.h"
|
|
#include "RegViewFPU.h"
|
|
#include "RegViewVU.h"
|
|
#include "PtrMacro.h"
|
|
|
|
#define CLSNAME _T("CRegViewWnd")
|
|
|
|
using namespace Framework;
|
|
using namespace boost;
|
|
|
|
CRegViewWnd::CRegViewWnd(HWND hParent, CVirtualMachine& virtualMachine, CMIPS* pCtx)
|
|
{
|
|
RECT rc;
|
|
|
|
if(!DoesWindowClassExist(CLSNAME))
|
|
{
|
|
WNDCLASSEX wc;
|
|
memset(&wc, 0, sizeof(WNDCLASSEX));
|
|
wc.cbSize = sizeof(WNDCLASSEX);
|
|
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
|
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW);
|
|
wc.hInstance = GetModuleHandle(NULL);
|
|
wc.lpszClassName = CLSNAME;
|
|
wc.lpfnWndProc = CWindow::WndProc;
|
|
RegisterClassEx(&wc);
|
|
}
|
|
|
|
SetRect(&rc, 0, 0, 320, 240);
|
|
|
|
Create(NULL, CLSNAME, _T("Registers"), WS_CLIPCHILDREN | WS_THICKFRAME | WS_CAPTION | WS_SYSMENU | WS_CHILD | WS_MAXIMIZEBOX, &rc, hParent, NULL);
|
|
SetClassPtr();
|
|
|
|
m_pRegView[0] = new CRegViewGeneral(m_hWnd, &rc, virtualMachine, pCtx);
|
|
m_pRegView[1] = new CRegViewSCU(m_hWnd, &rc, virtualMachine, pCtx);
|
|
m_pRegView[2] = new CRegViewFPU(m_hWnd, &rc, virtualMachine, pCtx);
|
|
m_pRegView[3] = new CRegViewVU(m_hWnd, &rc, virtualMachine, pCtx);
|
|
|
|
m_pRegView[0]->Enable(false);
|
|
m_pRegView[1]->Enable(false);
|
|
m_pRegView[2]->Enable(false);
|
|
m_pRegView[3]->Enable(false);
|
|
|
|
m_pRegView[0]->Show(SW_HIDE);
|
|
m_pRegView[1]->Show(SW_HIDE);
|
|
m_pRegView[2]->Show(SW_HIDE);
|
|
m_pRegView[3]->Show(SW_HIDE);
|
|
|
|
m_pTabs = new CNiceTabs(m_hWnd, &rc);
|
|
m_pTabs->InsertTab(_T("General"), CNiceTabs::TAB_FLAG_UNDELETEABLE, 0);
|
|
m_pTabs->InsertTab(_T("SCU"), CNiceTabs::TAB_FLAG_UNDELETEABLE, 1);
|
|
m_pTabs->InsertTab(_T("FPU"), CNiceTabs::TAB_FLAG_UNDELETEABLE, 2);
|
|
m_pTabs->InsertTab(_T("VU"), CNiceTabs::TAB_FLAG_UNDELETEABLE, 3);
|
|
|
|
m_pCurrent = NULL;
|
|
SetCurrentView(0);
|
|
|
|
m_pTabs->m_OnTabChange.connect(bind(&CRegViewWnd::OnTabChange, this, _1));
|
|
|
|
RefreshLayout();
|
|
}
|
|
|
|
CRegViewWnd::~CRegViewWnd()
|
|
{
|
|
unsigned int i;
|
|
|
|
for(i = 0; i < MAXTABS; i++)
|
|
{
|
|
DELETEPTR(m_pRegView[i]);
|
|
}
|
|
|
|
DELETEPTR(m_pTabs);
|
|
}
|
|
|
|
void CRegViewWnd::RefreshLayout()
|
|
{
|
|
RECT rc;
|
|
|
|
GetClientRect(&rc);
|
|
|
|
if(m_pCurrent != NULL)
|
|
{
|
|
m_pCurrent->SetSize(rc.right, rc.bottom - 21);
|
|
}
|
|
|
|
m_pTabs->SetPosition(0, rc.bottom - 21);
|
|
m_pTabs->SetSize(rc.right, 21);
|
|
|
|
}
|
|
|
|
long CRegViewWnd::OnSize(unsigned int nType, unsigned int nX, unsigned int nY)
|
|
{
|
|
RefreshLayout();
|
|
return TRUE;
|
|
}
|
|
|
|
long CRegViewWnd::OnSysCommand(unsigned int nCmd, LPARAM lParam)
|
|
{
|
|
switch(nCmd)
|
|
{
|
|
case SC_CLOSE:
|
|
Show(SW_HIDE);
|
|
return FALSE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
void CRegViewWnd::OnTabChange(unsigned int nTabID)
|
|
{
|
|
SetCurrentView(nTabID);
|
|
}
|
|
|
|
void CRegViewWnd::SetCurrentView(unsigned int nView)
|
|
{
|
|
if(m_pCurrent != NULL)
|
|
{
|
|
m_pCurrent->Enable(false);
|
|
m_pCurrent->Show(SW_HIDE);
|
|
}
|
|
|
|
m_pCurrent = m_pRegView[nView];
|
|
|
|
if(m_pCurrent != NULL)
|
|
{
|
|
m_pCurrent->Enable(true);
|
|
m_pCurrent->Show(SW_SHOW);
|
|
m_pCurrent->SetFocus();
|
|
}
|
|
|
|
RefreshLayout();
|
|
}
|