137 lines
3.4 KiB
C++
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]);
|
|
}
|