Files
Work/m68hc11/MCUDLG.CPP
2024-08-07 09:16:27 -04:00

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> &regData)
{
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)
{
}