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

174 lines
4.8 KiB
C++

#include <guitar/RangeDlg.hpp>
#include <guitar/RangeEditDlg.hpp>
#include <guitar/guitar.hpp>
#include <guitar/TabEntry.hpp>
#include <guitar/MessageBox.hpp>
#include <common/puredwrd.hpp>
#include <common/crsctrl.hpp>
RangeDialog::RangeDialog(void)
{
mInitHandler.setCallback(this,&RangeDialog::initHandler);
mCreateHandler.setCallback(this,&RangeDialog::createHandler);
mCloseHandler.setCallback(this,&RangeDialog::closeHandler);
mDestroyHandler.setCallback(this,&RangeDialog::destroyHandler);
mCommandHandler.setCallback(this,&RangeDialog::commandHandler);
insertHandler(VectorHandler::InitDialogHandler,&mInitHandler);
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
insertHandler(VectorHandler::CloseHandler,&mCloseHandler);
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
}
RangeDialog::RangeDialog(const RangeDialog &someRangeDialog)
{ // private implementation
*this=someRangeDialog;
}
RangeDialog::~RangeDialog()
{
removeHandler(VectorHandler::InitDialogHandler,&mInitHandler);
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
removeHandler(VectorHandler::CloseHandler,&mCloseHandler);
removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
}
RangeDialog &RangeDialog::operator=(const RangeDialog &someRangeDialog)
{ // private implementation
return *this;
}
bool RangeDialog::perform(GUIWindow &parentWindow,const TabRanges &ranges,int maxRange,bool isSelect)
{
Rect clientRect;
parentWindow.clientRect(clientRect);
mDisplayPoint.x((clientRect.right()-clientRect.left())/2);
mDisplayPoint.y((clientRect.bottom()-clientRect.top())/2);
mTabRanges=ranges;
mMaxRange=maxRange;
mIsSelection=isSelect;
return ::DialogBoxParam(processInstance(),(LPSTR)"RANGEDIALOG",(HWND)parentWindow,DWindow::DlgProc,(LPARAM)(DWindow*)this);
}
CallbackData::ReturnType RangeDialog::initHandler(CallbackData &someCallbackData)
{
Block<PureDWORD> stops;
mDisplayPoint.x(mDisplayPoint.x()-(width()/2));
mDisplayPoint.y(mDisplayPoint.y()-(height()/2));
move(mDisplayPoint);
mRangeList=::new OwnerDrawListAltColor(*this,getItem(RANGE_LIST),RANGE_LIST);
mRangeList.disposition(PointerDisposition::Delete);
stops.insert(&PureDWORD(35));
stops.insert(&PureDWORD(55));
mRangeList->setTabStops(stops);
setRangeList();
if(mIsSelection)
{
enable(RANGE_INSERT,false);
enable(RANGE_DELETE,false);
setCaption("Range Select");
}
return (CallbackData::ReturnType)false;
}
CallbackData::ReturnType RangeDialog::createHandler(CallbackData &someCallbackData)
{
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType RangeDialog::closeHandler(CallbackData &someCallbackData)
{
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType RangeDialog::destroyHandler(CallbackData &someCallbackData)
{
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType RangeDialog::commandHandler(CallbackData &someCallbackData)
{
switch(someCallbackData.wmCommandID())
{
case IDCANCEL :
endDialog(false);
break;
case IDOK :
if(mIsSelection)handleRangeSelection();
endDialog(true);
break;
case RANGE_INSERT :
handleRangeInsert();
break;
case RANGE_DELETE :
handleRangeDelete();
break;
}
if(LBN_DBLCLK==someCallbackData.wmCommandCommand())
{
if(mIsSelection)
{
handleRangeSelection();
endDialog(true);
}
else handleRangeEditSelection();
}
return (CallbackData::ReturnType)FALSE;
}
void RangeDialog::setRangeList(void)
{
for(int index=0;index<mTabRanges.size();index++)
{
String strItem;
Range &range=mTabRanges[index];
mRangeList->addString(range.toTabbedString());
}
mRangeList->setCurrent(0);
return;
}
void RangeDialog::handleRangeSelection(void)
{
mSelection=mRangeList->getCurrent();
}
void RangeDialog::handleRangeEditSelection(void)
{
RangeEditDialog rangeEditDialog;
int currSel;
currSel=mRangeList->getCurrent();
if(!rangeEditDialog.perform(*this,mTabRanges[currSel],mMaxRange))return;
Range range=rangeEditDialog.getRange();
mTabRanges.remove(currSel);
mTabRanges.insert(&range);
mRangeList->deleteString(currSel);
mRangeList->insertString(range.toTabbedString());
}
void RangeDialog::handleRangeInsert(void)
{
RangeEditDialog rangeEditDialog;
Range range;
if(!rangeEditDialog.perform(*this,range,mMaxRange))return;
range=rangeEditDialog.getRange();
mTabRanges.insert(&range);
mRangeList->insertString(range.toTabbedString());
}
void RangeDialog::handleRangeDelete(void)
{
int currSel;
if(-1==(currSel=mRangeList->getCurrent()))return;
if(IDCANCEL==MessageBox::messageBox(*this,"Confirm Delete","Delete Range Item"))return;
mRangeList->deleteString(currSel);
mTabRanges.remove(currSel);
currSel--;
if(currSel<0)mRangeList->setCurrent(0);
else mRangeList->setCurrent(currSel);
}