148 lines
4.3 KiB
C++
148 lines
4.3 KiB
C++
#include <m68hc11/mcudlg.hpp>
|
|
#include <m68hc11/odlstled.hpp>
|
|
#include <m68hc11/m68hc11.hpp>
|
|
#include <common/stdio.hpp>
|
|
|
|
MCUDlg::MCUDlg(void)
|
|
{
|
|
mInitHandler.setCallback(this,&MCUDlg::initHandler);
|
|
mCreateHandler.setCallback(this,&MCUDlg::createHandler);
|
|
mCloseHandler.setCallback(this,&MCUDlg::closeHandler);
|
|
mDestroyHandler.setCallback(this,&MCUDlg::destroyHandler);
|
|
mCommandHandler.setCallback(this,&MCUDlg::commandHandler);
|
|
insertHandler(VectorHandler::InitDialogHandler,&mInitHandler);
|
|
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
|
insertHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
|
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
|
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
|
}
|
|
|
|
MCUDlg::MCUDlg(const MCUDlg &someMCUDlg)
|
|
{ // private implementation
|
|
*this=someMCUDlg;
|
|
}
|
|
|
|
MCUDlg::~MCUDlg()
|
|
{
|
|
removeHandler(VectorHandler::InitDialogHandler,&mInitHandler);
|
|
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
|
removeHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
|
removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
|
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
|
}
|
|
|
|
MCUDlg &MCUDlg::operator=(const MCUDlg &someMCUDlg)
|
|
{ // private implementation
|
|
return *this;
|
|
}
|
|
|
|
BOOL MCUDlg::perform(GUIWindow &parentWindow)
|
|
{
|
|
::CreateDialogParam(processInstance(),(LPSTR)"MCUDLG",(HWND)parentWindow,DWindow::DlgProc,(LPARAM)(DWindow*)this);
|
|
return isValid();
|
|
}
|
|
|
|
CallbackData::ReturnType MCUDlg::initHandler(CallbackData &someCallbackData)
|
|
{
|
|
mOwnerDrawList=::new OwnerDrawListBinaryLed(*this,getItem(MCUDLG_REGISTERS),MCUDLG_REGISTERS);
|
|
mOwnerDrawList.disposition(PointerDisposition::Delete);
|
|
for(int index=STRING_REGISTERPORTA;index<=STRING_REGISTERCONFIG;index++)mOwnerDrawList->insertString(String(index));
|
|
return (CallbackData::ReturnType)FALSE;
|
|
}
|
|
|
|
CallbackData::ReturnType MCUDlg::createHandler(CallbackData &someCallbackData)
|
|
{
|
|
return (CallbackData::ReturnType)FALSE;
|
|
}
|
|
|
|
CallbackData::ReturnType MCUDlg::closeHandler(CallbackData &someCallbackData)
|
|
{
|
|
return (CallbackData::ReturnType)FALSE;
|
|
}
|
|
|
|
CallbackData::ReturnType MCUDlg::destroyHandler(CallbackData &someCallbackData)
|
|
{
|
|
return (CallbackData::ReturnType)FALSE;
|
|
}
|
|
|
|
CallbackData::ReturnType MCUDlg::commandHandler(CallbackData &someCallbackData)
|
|
{
|
|
switch(someCallbackData.wmCommandID())
|
|
{
|
|
case IDCANCEL :
|
|
handleCancel();
|
|
break;
|
|
case IDOK :
|
|
handleOk();
|
|
break;
|
|
}
|
|
return (CallbackData::ReturnType)FALSE;
|
|
}
|
|
|
|
void MCUDlg::setRegister(int mcuRegister,BYTE value)
|
|
{
|
|
String stringData;
|
|
String strItem;
|
|
String strData;
|
|
|
|
if(LB_ERR==mOwnerDrawList->getText(stringData,mcuRegister))return;
|
|
strItem=stringData.betweenString(0,'\t');
|
|
if(strItem.isNull())::sprintf(strData,"%s\t%d",(LPSTR)stringData,value);
|
|
else ::sprintf(strData,"%s\t%d",(LPSTR)strItem,value);
|
|
mOwnerDrawList->deleteString(mcuRegister);
|
|
mOwnerDrawList->insertString(strData,mcuRegister);
|
|
}
|
|
|
|
void MCUDlg::setRegisters(GlobalData<BYTE> ®Data)
|
|
{
|
|
mOwnerDrawList->setRedraw(FALSE);
|
|
for(int index=0;index<regData.size();index++)setRegister(index,regData[index]);
|
|
mOwnerDrawList->setRedraw(TRUE);
|
|
}
|
|
|
|
void MCUDlg::setVarByteData(GlobalData<BYTE> &byteData)
|
|
{
|
|
String strData;
|
|
String strLine;
|
|
String strHexLine;
|
|
|
|
for(int index=0;index<byteData.size();index++)
|
|
{
|
|
::sprintf(strData,"%c",byteData[index]);
|
|
strLine+=strData;
|
|
}
|
|
for(index=0;index<byteData.size();index++)
|
|
{
|
|
::sprintf(strData,"%02lx",int(byteData[index]));
|
|
strHexLine+=strData;
|
|
}
|
|
sendMessage(MCUDLG_MESSAGES,LB_INSERTSTRING,-1,(LPARAM)(LPSTR)strLine);
|
|
sendMessage(MCUDLG_MESSAGES,LB_INSERTSTRING,-1,(LPARAM)(LPSTR)strHexLine);
|
|
}
|
|
|
|
void MCUDlg::setSingleByteData(BYTE singleByteData)
|
|
{
|
|
String strLine;
|
|
|
|
|
|
if(isprint(singleByteData))::sprintf(strLine,"%c (%02lxh)",singleByteData,(int)singleByteData);
|
|
else ::sprintf(strLine,"'' (%02lxh)",(int)singleByteData);
|
|
sendMessage(MCUDLG_MESSAGES,LB_INSERTSTRING,-1,(LPARAM)(LPSTR)strLine);
|
|
// ::sprintf(strLine,"%02lx",int(singleByteData));
|
|
// sendMessage(MCUDLG_MESSAGES,LB_INSERTSTRING,-1,(LPARAM)(LPSTR)strLine);
|
|
}
|
|
|
|
void MCUDlg::setStringData(const String &string)
|
|
{
|
|
sendMessage(MCUDLG_MESSAGES,LB_INSERTSTRING,-1,(LPARAM)(LPSTR)string.str());
|
|
}
|
|
|
|
void MCUDlg::setQuadByteData(DWORD quadByteData)
|
|
{
|
|
}
|
|
|
|
void MCUDlg::setDoubleByteData(WORD doubleByteData)
|
|
{
|
|
}
|
|
|