Files
Work/guitar/backup/20030501/RangeEditDlg.cpp
2024-08-07 09:16:27 -04:00

134 lines
3.8 KiB
C++

#include <guitar/RangeEditDlg.hpp>
#include <guitar/guitar.hpp>
#include <guitar/MessageBox.hpp>
#include <common/puredwrd.hpp>
RangeEditDialog::RangeEditDialog(void)
{
mInitHandler.setCallback(this,&RangeEditDialog::initHandler);
mCreateHandler.setCallback(this,&RangeEditDialog::createHandler);
mCloseHandler.setCallback(this,&RangeEditDialog::closeHandler);
mDestroyHandler.setCallback(this,&RangeEditDialog::destroyHandler);
mCommandHandler.setCallback(this,&RangeEditDialog::commandHandler);
insertHandler(VectorHandler::InitDialogHandler,&mInitHandler);
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
insertHandler(VectorHandler::CloseHandler,&mCloseHandler);
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
}
RangeEditDialog::RangeEditDialog(const RangeEditDialog &someRangeEditDialog)
{ // private implementation
*this=someRangeEditDialog;
}
RangeEditDialog::~RangeEditDialog()
{
removeHandler(VectorHandler::InitDialogHandler,&mInitHandler);
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
removeHandler(VectorHandler::CloseHandler,&mCloseHandler);
removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
}
RangeEditDialog &RangeEditDialog::operator=(const RangeEditDialog &someRangeEditDialog)
{ // private implementation
return *this;
}
bool RangeEditDialog::perform(GUIWindow &parentWindow,const Range &range,int maxRange)
{
mRange=range;
mMaxRange=maxRange;
return ::DialogBoxParam(processInstance(),(LPSTR)"RANGEEDITDIALOG",(HWND)parentWindow,DWindow::DlgProc,(LPARAM)(DWindow*)this);
}
CallbackData::ReturnType RangeEditDialog::initHandler(CallbackData &someCallbackData)
{
if(mRange.getRangeName().isNull()&&!mRange.getBeginRange()&&!mRange.getEndRange())setCaption("Insert Range");
setData();
return (CallbackData::ReturnType)false;
}
CallbackData::ReturnType RangeEditDialog::createHandler(CallbackData &someCallbackData)
{
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType RangeEditDialog::closeHandler(CallbackData &someCallbackData)
{
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType RangeEditDialog::destroyHandler(CallbackData &someCallbackData)
{
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType RangeEditDialog::commandHandler(CallbackData &someCallbackData)
{
switch(someCallbackData.wmCommandID())
{
case IDCANCEL :
endDialog(false);
break;
case IDOK :
getData();
if(!isValid())errorMessage();
else endDialog(true);
break;
}
return (CallbackData::ReturnType)FALSE;
}
void RangeEditDialog::setData(void)const
{
setText(RANGEEDIT_NAME,mRange.getRangeName());
setText(RANGEEDIT_BEGIN,String().fromInt(mRange.getBeginRange()));
setText(RANGEEDIT_END,String().fromInt(mRange.getEndRange()));
}
void RangeEditDialog::getData(void)
{
String strName;
String strBegin;
String strEnd;
getText(RANGEEDIT_NAME,strName);
mRange.setRangeName(strName);
getText(RANGEEDIT_BEGIN,strBegin);
mRange.setBeginRange(strBegin.toInt());
getText(RANGEEDIT_END,strEnd);
mRange.setEndRange(strEnd.toInt());
}
bool RangeEditDialog::isValid(void)
{
if(mRange.getRangeName().isNull())
{
mLastError="Range name cannot be empty.";
return false;
}
if(mRange.getBeginRange()<0)
{
mLastError="Begin range position must be greater than zero.";
return false;
}
if(mRange.getBeginRange()>mRange.getEndRange())
{
mLastError="Begin range position must be smaller than end range position.";
return false;
}
if(mRange.getEndRange()>=mMaxRange)
{
mLastError="End range position must be less than "+String().fromInt(mMaxRange);
return false;
}
return true;
}
void RangeEditDialog::errorMessage(void)
{
MessageBox::messageBox(*this,"Invalid range.",mLastError.str());
}