Files
Work/m68hc11/CMPDlg.cpp
2024-08-07 09:16:27 -04:00

137 lines
3.4 KiB
C++

#include <m68hc11/cmpdlg.hpp>
#include <m68hc11/m68hc11.hpp>
#include <m68hc11/opendir.hpp>
#include <common/stdio.hpp>
CMPDlg::CMPDlg(void)
{
mInitHandler.setCallback(this,&CMPDlg::initHandler);
mCreateHandler.setCallback(this,&CMPDlg::createHandler);
mCloseHandler.setCallback(this,&CMPDlg::closeHandler);
mDestroyHandler.setCallback(this,&CMPDlg::destroyHandler);
mCommandHandler.setCallback(this,&CMPDlg::commandHandler);
insertHandler(VectorHandler::InitDialogHandler,&mInitHandler);
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
insertHandler(VectorHandler::CloseHandler,&mCloseHandler);
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
}
CMPDlg::CMPDlg(const CMPDlg &someCMPDlg)
{ // private implementation
*this=someCMPDlg;
}
CMPDlg::~CMPDlg()
{
removeHandler(VectorHandler::InitDialogHandler,&mInitHandler);
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
removeHandler(VectorHandler::CloseHandler,&mCloseHandler);
removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
}
CMPDlg &CMPDlg::operator=(const CMPDlg &someCMPDlg)
{ // private implementation
return *this;
}
bool CMPDlg::perform(GUIWindow &parentWindow)
{
return ::DialogBoxParam(processInstance(),(LPSTR)"CMPDLG",(HWND)parentWindow,DWindow::DlgProc,(LPARAM)(DWindow*)this);
}
CallbackData::ReturnType CMPDlg::initHandler(CallbackData &someCallbackData)
{
setItems();
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType CMPDlg::createHandler(CallbackData &someCallbackData)
{
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType CMPDlg::closeHandler(CallbackData &someCallbackData)
{
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType CMPDlg::destroyHandler(CallbackData &someCallbackData)
{
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType CMPDlg::commandHandler(CallbackData &someCallbackData)
{
switch(someCallbackData.wmCommandID())
{
case IDCANCEL :
case CMPDLG_CANCEL :
handleCancel();
break;
case CMPDLG_OK :
handleOk();
break;
case CMPDLG_LIST :
handleList(someCallbackData);
break;
case CMPDLG_BROWSE :
handleBrowse();
break;
}
return (CallbackData::ReturnType)FALSE;
}
void CMPDlg::handleCancel(void)
{
endDialog(false);
}
void CMPDlg::handleOk(void)
{
getItems();
endDialog(true);
}
void CMPDlg::handleList(CallbackData &cbData)
{
DWORD current;
switch(cbData.wmCommandCommand())
{
case LBN_DBLCLK :
current=sendMessage(CMPDLG_LIST,LB_GETCURSEL,0,0L);
sendMessage(CMPDLG_LIST,LB_DELETESTRING,current,0L);
break;
}
}
void CMPDlg::handleBrowse()
{
String strDirectory;
OpenDirectory openDirectory;
if(!openDirectory.getOpenDirectory(*this,"Choose Folder",".",strDirectory))return;
sendMessage(CMPDLG_LIST,LB_INSERTSTRING,-1,(LPARAM)(LPCSTR)strDirectory);
}
void CMPDlg::getItems(void)
{
String strItem;
DWORD count;
mIncludePath.remove();
count=sendMessage(CMPDLG_LIST,LB_GETCOUNT,0,0L);
for(int index=0;index<count;index++)
{
sendMessage(CMPDLG_LIST,LB_GETTEXT,index,(LPARAM)(LPSTR)strItem);
mIncludePath.insert(&strItem);
}
}
void CMPDlg::setItems(void)
{
for(int index=0;index<mIncludePath.size();index++)
sendMessage(CMPDLG_LIST,LB_INSERTSTRING,-1,(LPARAM)(LPCSTR)mIncludePath[index]);
}